python -- self 简单理解
简单一句话,我们是伙伴
结论
- self 在定义时需要定义,但在调用时会自动传入
- self 的名字可以变更
- self 总是指调用时的类的实例
下面就上面三点进行解释
先看一个例子
>>> class Test(object):
... def testSelf(self):
... print(self)
...
>>> t = Test()
>>> t.testSelf()
<__main__.Test object at 0x00000182DEB82F98>
从例子可以看出,self 实际上是类的对象
在 python 机制中,当我们执行 t.testSelf() 时,实际上执行的是 Test.testSelf(t), 其会把生成的对象 t 传递给 self,所以实际打印出来的就是 t 了,因此,self 代表的是类的实例
所以说,当使用类的实例调用类的方法时,self 是不能够省略的,因为 python 有自动传递参数
那换一个角度想,如果直接执行 Test.testSelf() 的话,是不是在定义类的时候把 self 去掉了,答案是肯定可以去掉的,因为这时候并没有传递实例进去,但这样适应就没有意思了,对吧
另外,因为 self 仅仅只是代表一个参数,所以他的名字也就可以变更了,但还是约定成俗的比较好
最后,因为我们传进去的是相应类的实例对象,所以 self 也就总是指向调用时的类的实例
也就是说,某一个类里面的 self 不一定指向这个类的实例对象,可能是其他类的