python Parent.__init()和super(Child, self)的区别

Posted 菲菲菲菲菲常新的新手

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python Parent.__init()和super(Child, self)的区别相关的知识,希望对你有一定的参考价值。

super函数做的事情

def supper(cls, inst):
    mro = inst.__class__.mro()
    return mro[mro.index(cls) + 1]

inst生成父类的列表

从列表中找到cls的索引,然后返回其下一个索引

假设

mro = [a,b,c]

cls = b

那么cls的索引为1

返回的是其下一个索引也就是mro[2]即c

mro 全程是Method Resolution Order

方法返回的是inst的所有的父类,

顺序是

假设a是基类,b,c都是a的子类,d继承了b和c(继承顺序是b,c)

那么d的mro返回的是

[d,b,c,a]

对d使用super(d,self)方法返回的是b

更详细内容请参看python cookbook

http://python3-cookbook.readthedocs.io/zh_CN/latest/c08/p07_calling_method_on_parent_class.html

以上是关于python Parent.__init()和super(Child, self)的区别的主要内容,如果未能解决你的问题,请参考以下文章

面对对象之继承 | Python

python pyqt和父类

python 类的定义

python打印经典故事从前有座山

python tkinter与ttk

导出每个图层集的JPEG文件(带有PyQt的Photoshop Python)