什么是<;类别';超级'&燃气轮机;类在python中是什么?

什么是<;类别';超级'&燃气轮机;类在python中是什么?,python,inheritance,Python,Inheritance,我不明白这里的super术语的用法?它是一个类、函数还是其他什么 从下面的代码: class Child(SomeBaseClass): def __init__(self): super(Child, self).__init__() 有人能解释一下下面这行代码吗 super(Child, self).__init__() \uuuu init\uuuu()是python中的构造函数,super是继承类的父类 class Child(SomeBaseClass):

我不明白这里的
super
术语的用法?它是一个类、函数还是其他什么

从下面的代码:

class Child(SomeBaseClass):
    def __init__(self):
        super(Child, self).__init__()
有人能解释一下下面这行代码吗

super(Child, self).__init__()
\uuuu init\uuuu()
是python中的构造函数,
super
是继承类的父类

class Child(SomeBaseClass):
    def __init__(self):
        super(Child, self).__init__()
对于此代码,每当您对类型为
Child
的新对象不满足时,它将调用其构造函数
\uuuu init\uuu()
,后者依次调用
SomeBaseClass.\uuuu init\uu()。

意思是:使用实例
self
调用
子类的基类型的
\uuuuu init\uuu
方法。因此,在您的情况下,这将相当于
SomeBaseClass.\uuuu init\uuuuu(self)
。但是使用
super
可以避免再次显式地命名基类型,也可以用于多重继承

因此基本上意味着获取类型
t
的基类型,并将其绑定到实例
self
,以便您可以直接调用方法


请注意,在Python 3中,的参数是可选的,因此
super()。\uuuu init\uuuu()
可以工作。

只需添加,您可以在以下文档中找到更多信息:。它位于页面较低的位置。那么为什么我们要重写init呢?您并没有重写它,每个类都有它的on
\uuu init\uuu()
,并且从不从super继承它或将它交给子类。它就像C++或java中的构造函数。您在这里做的是从子类init调用基类init。
super(Child, self).__init__() <=> SomeBaseClass.__init__(self)
super(Child, self).__init__() <=> SomeBaseClass.__init__(self)
>>> class A(object):
...     def __init__(self):
...         print "A"
... 
>>> class B(object):
...     def __init__(self):
...         print "B"
... 
>>> class C(A, B):
...     def __init__(self):
...         super(C, self).__init__()
...             print "C"
... 
>>> c = C()
A
C
>>> class D(B, A):
...     def __init__(self):
...         super(D, self).__init__()
...             print "D"
... 
>>> d = D()
B
D
>>> class CC(A, B):
...     def __init__(self):
...         B.__init__(self) # Explicitely call B and not A !
...         print "CC"
... 
>>> cc = CC()
B
CC