博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python -- self 简单理解
阅读量:5334 次
发布时间:2019-06-15

本文共 723 字,大约阅读时间需要 2 分钟。

python -- self 简单理解


简单一句话,我们是伙伴


结论

  1. self 在定义时需要定义,但在调用时会自动传入
  2. self 的名字可以变更
  3. 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 不一定指向这个类的实例对象,可能是其他类的


转载于:https://www.cnblogs.com/pinsily/p/7889483.html

你可能感兴趣的文章
【BZOJ-1055】玩具取名 区间DP
查看>>
Oracle安装配置—64位Win7安装配置64位Oracle
查看>>
Bit Twiddling Hacks
查看>>
个人总结
查看>>
const与指针
查看>>
java面试题全集(中)
查看>>
[USACO08MAR]土地征用Land Acquisition
查看>>
Windwos中的线程同步
查看>>
删除重复记录
查看>>
LeetCode : Reverse Vowels of a String
查看>>
代码托管服务器-软工第一次翻转课堂
查看>>
ECharts树图节点过多时取消缩放,调整容器高度自适应内容变化
查看>>
本地启动项目后cookie跨域获取不到的处理方式
查看>>
Codeforces 806 D.Prishable Roads
查看>>
Linux 一些表达式和运算符
查看>>
Android中的六大布局
查看>>
ZZNUOJ-2157: 水滴来袭-【干扰阅读-卡模糊精度1e-8的问题】
查看>>
个人自定义的快捷键 - 记录
查看>>
IIS部署SSL,.crt .key 的证书,怎么部署到IIS,记录一下,以免忘记。
查看>>
MVC框架 Struts
查看>>