python self是什么鬼,其本质就是特殊的形参
小伙伴们能真正理解 self 是什么东西吗?现在我从实质上为小伙伴们讲解一下 self。
self 的实质是形参,现通过普通形参,来讲解特殊形参 self
看基本概念的理解
普通形参:通过 函数(参数) 方式,来手动传入参数,只能函数内部使用
普通形参示例
特殊形参 self :通过 对象.方法() 方式,来自动传入参数(对象),能在整个类中使用
说明
- 只能在类中使用,因用的太多,自动传入了
- self 参数是固定的,只代表类的对象
- 传入方式是固定的,对象.方法() 时,自动传入 对象
- self 本质是形参,哪个对象调用类中的方法,self 就代表哪个对象。和普通参数一样,name参数传入jack时,name就代表jack;name参数传入mary时,name就代表mary
- self是形参,可以写成别的名字,但一般都不这样做,标识度不够,大家不明白
调用方法
类的外部:实例调用方法时,会自动把 对象 传给 self,所以 self 参数不用手动传入
类的内部:实例调用方法时,直接用 self 来调用,就代表传入的实例。self.方法() 就等价于 实例.方法()
特殊形参self 类内部使用和外部调用
继承中 self 代表 子类对象,并不代表父类对象
下图中,Base 中的 self.smoke(),并不执行 Base 中的 smoke 方法,而是执行A中 smoke 方法
展示执行路径