一.什么是self
#self相当于c++中的this指针
#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('球C')
>>>a.kick()
我叫球A,该死的,谁踢我...
>>>c.kick()
我叫球C,该死的,谁踢我...
二.python的魔法方法
__init__(self,param1,param2...)
#构造方法,只要实例化一个对象的时候,这个方法就会在对象被创建的时候自动调用
#例子如下:
>>>class Ball:
def __init__(self,name):
self.name = name
def kick(self):
print('我叫%s,该死的,谁踢我...' % self.name)
>>>b = Ball('土豆')
>>>b.kick()
我叫土豆,该死的,谁踢我...
>>>c = Ball() #如果不输入就会报错,因为它需要一个位置参数
Traceback (most recent call last):
File "<pyshell#12>", line 1, in <module>
c = Ball()
TypeError: Ball.__init__() missing 1 required positional argument: 'name'
三.公有和私有
1.公有
#举例如下:
>>>class person:
name = "cool"
>>>p = person()
>>>p.name
'cool'
2.私有
#在Python中定义私有变量只需要在变量名或函数名前加上“__”两个下划线,那么这个函数或变量就为私有了
#举例如下
>>>class person:
__name = "cool"
>>>p = person()
>>>p.name #此时变为了私有,只有从内部进行
Traceback (most recent call last):
File "<pyshell#21>", line 1, in <module>
p.name
AttributeError: 'person' object has no attribute 'name'
#以下为为内部进行:
>>>class person:
__name = "cool"
def getname(self):
return self.__name
>>>p = person()
>>>p.getname() #从内部调用getname()进而调用__name
'cool'
#进阶访问方法
>>>class person:
__name = "cool"
def getname(self):
return self.__name
>>>p._person__name #_类名__变量名
'cool'