少儿编程Python:写面向对象时,方法里必须要写的 self 到底是个啥?一篇文章给孩子讲透!
带孩子写 Python 面向对象代码时,无论是构造方法还是普通实例方法,大家都会发现函数的第一个参数总是带着一个神奇的 self。很多孩子搞不懂:为什么定义时要写 self,调用时却又不用传它?今天咱们就用一段小实验,把 self 的真相彻底剖析清楚!
❓ 一、 什么是 self?它到底有什么用?
在 Python 中定义类时,无论是类的构造方法 __init__,还是类中的实例方法,都强制要求将 self 作为方法的第一个参数。
简单来说,self 表征的就是当前的实例对象。 一个类可以实例化出成百上千个对象,当某个对象调用类中的方法时,Python 会自动把这个对象自身的引用作为第一个参数传给方法。这样,类就能准确区分当前操作的到底属于哪一个实例的内容!
1. 代码演示:用 self 调用自己的属性
🔬 二、实测破解:self 到底指向谁?
为了让孩子直观看到 self 的本质,我们可以写一个打印内存地址的实验函数 myself(),看看 self 和外部的对象变量是不是同一个东西。
打印内存地址实测:
逻辑剖析:
当 Someone_1(小杰)调用 myself() 时,self 的内存地址跟 Someone_1 完全一样!
当 Someone_2(大杰)调用 myself() 时,self 的内存地址又变成了 Someone_2 的地址!
结论:self 就像汉字里的“我”。小杰说“我是小杰”,这个“我”就是小杰;大杰说“我是大杰”,这个“我”就是大杰。谁调用这个方法,self 就代表谁!
📝 知识点速查表
核心概念 | 白话解析 | 代码规则 |
self 的本质 | 当前实例对象本身的引用/代表当前对象自己 | 作为类中实例方法的第一个必填参数 |
self 的作用 | 让类能够区分并操作当前不同实例的具体数据 | 在内部通过 self.属性名 访问各自属性 |
传参规则 | 开发者调用方法时无需手动传参,Python 会自动绑定 | 定义时需写 def func(self, ...),调用时直接 obj.func(...) |