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 方法


展示执行路径

相关文章

Python | 一文搞懂self

关于self在Python中,self是一个关键字,它表示类实例本身。通常,self是在类方法中的第一个参数传递的。通过使用self,我们可以访问类的属性和方法。当一个类定义后,我们可以使用它来创建对...

为什么python的self参数必须显式声明?隐式this才是万恶之源

杂谈python中存在 self 这个参数,记得有个朋友是写 java 的,当他看到python中的代码立刻明白了它的用途。他问我:“为什么python中的 self不能像this一样,隐式声明多好,...

Python这个代码里面x=self是什么意思啊

大家好,我是Python进阶者。一、前言前几天在Python白银交流群【无敌劈叉小狗】问了一个Python基础的问题,问题如下:这个代码里面x=self是什么意思啊?self到底是个什么存在呢?感觉把...

Python super()函数:调用父类的构造方法

前面不止一次讲过,Python 中子类会继承父类所有的类属性和类方法。严格来说,类的构造方法其实就是实例方法,因此毫无疑问,父类的构造方法,子类同样会继承。但我们知道,Python 是一门支持多继承的...

一文带你解读JavaScript的引用类型和函数对象

前言相信做网站对JavaScript再熟悉不过了,它是一门脚本语言,不同于Python的是,它是一门浏览器脚本语言,而Python则是服务器脚本语言,我们不光要会Python,还要会JavaScrip...