self 是什么?
举例:
class Ball:
def setName(self,name):
self.name = name
def kick(self):
print("我叫%s,该死的谁踢我。。"%self.name)
>>> a = Ball()
>>> a.setName('球A')
>>> b = Ball()
>>> b.setName('球B')
>>> c = Ball()
>>> c.setName('土豆')
>>> a.kick()
我叫球A,该死的谁踢我。。
>>> c.kick()
我叫土豆,该死的谁踢我。。
当调用kick方法时 a.kick()括号里面有个隐藏的self参数,self自动接收到了a 输出的结果就是“我叫球A,该死的谁踢我。。”
self是python 默认的,必须写在参数的第一个位置。
python的__init__方法
__init__方法初始化对象
class Ball:
def __init__(self,name):
print("我是%s"%name)
self.name = name
def kick(self):
print("我叫%s,该死的谁踢我。。"%self.name)
>>> b = Ball('土豆')
我是土豆
>>> b.kick()
我叫土豆,该死的谁踢我。。
注意到__init__方法的第一个参数永远是self,表示创建的实例本身,因此,在__init__方法内部,就可以把各种属性绑定到self,因为self就指向创建的实例本身。
公有和私有:
>>> class Person:
name = "Alex"
>>> p = Person()
>>> p.name
'Alex'
python 定义私有变量,只需要在变量名或函数名前面加上‘——’二个下划线就可以了
>>> class Person:
__name = "Alex"
这个时候使用p.name系统就会报错
当然你可以写成:
>>> class Person:
__name = "Alex"
def getName(self):
return self.__name
>>> Person().getName()
'Alex'
利用方法从函数内部调用
或者使用_类名__变量名的方式访问
>>> Person()._Person__name
'Alex