Python-浅谈类方法中的Self

背景

一入Python深似海,最近也不知怎滴。迷恋上了Python,感觉这玩意儿越看越有意思,本来是打算看完初级基本教程再来个总结的,谁知半路杀出个Self,使我不得不赶紧记录一下此刻的小小感悟!哈哈,不喜勿怪!!

介绍

Python到底是啥玩意儿,网上是这样解释的:一种解释型、面向对象、动态数据类型的高级程序设计语言。(PS:反正觉得计算机语言都是挺高级的)

缘由

在漫长的学习揣摩中,接触到了Python中的类,一说到类肯定有类的属性和方法,其中属性好理解,但是这个方法(PS:习惯称函数叫方法)有点让人脑仁儿疼,特别是它的参数Self,为什么呢?窃听下文分解。

过程

  • 首先,Python中类的属性和普通类的属性没什么太大区别,都是实例化对象,然后调用呗!
  • 然后就是Python中类的方法和普通类的方法有个很大的差别就是:必须有一个额外的第一个参数名称, 按照惯例它的名称是 Self。(PS:也可以写成其他名字)Self说是代表类的实例,而非类。如图所示:Python-浅谈类方法中的Self_第1张图片
    从执行结果可以很明显的看出,self 代表的是类的实例,代表当前对象的地址。其中的Self这个参数不是我打进去的,是当我写方法名的时候,编辑器默认推荐的写法,难道真的是必要的吗?接着看
    Python-浅谈类方法中的Self_第2张图片
    可以看到删除了默认的Self也是可以的,编译运行都正常,最后翻看文档才知道,这里调用方法的时候,解释器默认是这样玩儿的:MyClass.fun(self),终于知道为什么不传也是可以的了,不过还是根据推荐的写比较好,这里仅仅谈接一下是否可以省略!
  • 最后再来探究一下继承关系里Self的效果吧,请看效果图:
    传入对象的结果:
    Python-浅谈类方法中的Self_第3张图片
    不传对象的结果:
    Python-浅谈类方法中的Self_第4张图片
    很明显,self所代表的实例对象不一定就是它所在的类的对象,实际代表的是被传入的类的对象实例。

结论

综上所述,大致对Self有了一个浅显的了解,基本上可以归为一下几点:

  • Self是可以不传的,但是建议默认传入
  • Self的名字并不是规定死的,官方推荐Self
  • Self在类继承时,传入的是哪个实例,就是那个传入的实例,而不是指定义了Self的类的实例。

你可能感兴趣的:(Python-浅谈类方法中的Self)