首页 > 编程语言 > 详细

python中super()方法的理解

时间:2020-05-27 19:07:14      阅读:40      评论:0      收藏:0      [点我收藏+]

python中对象方法的定义很怪异,第一个参数一般都命名为self(相当于其它语言的this),用于传递对象本身,

还有一个参数cls(相当于类名,当直接调用类方法的时候使用)。

在类的继承里面super()非常常用, 它解决了子类调用父类方法的一些问题, 父类多次被调用时只执行一次。

def super(cls, inst):

      mro = inst.__class__.mro()

      return mro[mro.index(cls) + 1]

当使用 super(cls, inst) 时,Python 会在 inst 的类的 MRO 列表上搜索 cls 的下一个类。

而查看inst类的的MRO列表的方法就是:

类.mro()   或  类.__mro__ 或 inst.__class__.mro()

例如:当C是一个类的时候,获得一个类的MRO的方法是

C.mro() 或  C.__mro__  或 C().__class__.mro()

技术分享图片

 

执行过程:

  当执行生成D的inst对象的时候,先执行Enter D

这个时候D类的MRO列表为[<class ‘__main__.D‘>, <class ‘__main__.B‘>, <class ‘__main__.C‘>, <class ‘__main__.A‘>, <class ‘object‘>]

当执行super(D,self) 就是在self对象的类的MRO列表中查找D的下一个父类。这个self是D类的实例对象inst。

而D类中的MRO列表中D的下一个父类是B。

 

python中super()方法的理解

原文:https://www.cnblogs.com/gusseMe/p/12973343.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!