在Python中一切皆对象,不太清楚为什么请看:深刻理解Python中的元类(metaclass)
一句话概括:self表示类的实例对象,而非类对象。
class Foo(object): def __init__(self): print('Foo is %s, self is %s'%(Foo,self)) def prt(self): print('----------') r = Foo() # 结果如下 # Foo is <class '__main__.Foo'>, self is <__main__.Foo object at 0x02833C50>
当我们执行 r.prt() 时,Python解释器默认会调用Foo.prt()并将r作为第一个参数传入,也就是Foo.prt(r)
当然self不用非得写成self,this或者其他都可以。
当调用某个方法时,可以通过__self__来查看其调用者,__self__是一个只读属性,不可修改。
class Bar(object): def prt(self): print('bar') b = Bar() p = b.prt print(p.__self__) # <__main__.Bar object at 0x017AF970>
no copyright !! 个人原创博客欢迎转载,可以不保留出处。