Python中,通常把类定义语句中定义方法(函数)时的参数表列中的第一个参数写成self,用于在方法体中作为类的实例对象,也就是说,可以在方法体中通过操作self而操作类的实例对象。
值得注意的是,self并不是Python的关键词,你完全可以在参数表列用其它任何合法的标识符,或者列表参数*args代替。
机制:
通过对象调用方法时,即形如a.method()的语句,Python将自动地(隐式)将对象自身作为第一个参数传给self。
通过对象的类调用方法时,即形如A.method()的语句,Python此时将A.method视为普通的函数,需要用户手动指定第一个参数。
举例:
1.定义一个类:
class A:
...
def method(self,...): # 写成foo也是合法的,但同时下面应相应地改为foo.var=1
self.var = 1
(注:以上的...应替换成其它语句或方法参数)
2.执行以下语句:
a=A() # 建立A的实例对象,名为a。
a.method() # 调用对象a的method方法。
此时,a对象的var属性值通过method方法设为1。
A.method(a) # 通过类来调用方法,需要自己指定self。
此时,a对象的var属性值通过类A的method函数设为1。