true. super() only works for new-style classes. A typical use for calling a cooperative superclass method is: class C(B): def meth(self, arg): super(C, self).meth(arg) New in version 2.2. 从说明来看,可以把类B改写如代码段3: 代码段3: class A(object): # A must be new-style c...
由于super() 绝大多数时候,都在咱们开篇说的这种情况下使用,即在类的定义语句块内部写:super(本类名,self) 所以python3 做了个简化,如果你在类定义的语句块内写一个不带参数的super(),则相当于写了 super(本类名,self) 因为super() 不光可以用在类的定义内部,所以,这种方便仅在类定义体内部有效。
super(type, obj)-> boundsuperobject; requiresisinstance(obj,type) super(type)-> unboundsuperobject super(type, type2)-> boundsuperobject; requiresissubclass(type2,type) Typical use to call a cooperative superclass method: 除去self外接受一个或者或者两个参数,如同注释声明的一样,接受两个参数时返回...
这就是super()第二个参数———self 的意义。 如果是一个歌手实例调用的,那么self=歌手实例,super()将站在一个歌手的角度,去找歌手类的‘下一个类’,则会找到人类; 如果是一个艺人实例调用的,那么self=艺人实例,super()将站在一个艺人的角度,去找歌手类的‘下一个类’,则会找到演员。 代码如下: classPe...
3.不要一说到 super 就想到父类!super 指的是 MRO(method resolution order) 中的下一个类! 另一篇比较好的文章:理解 Python super 1. python2 子类调用父类函数成员有2种方法:普通方法和super()方法 假设Base是基类 class Base(object): def __init__(self): ...
| super(type, type2) -> bound super object; requires issubclass(type2, type) | Typical use to call a cooperative superclass method: | class C(B): | def meth(self, arg): | super().meth(arg) | This works for class methods too: ...
3 中可以直接使用 super().method() 的形式,而在 Python 2 中需要使用 super(Class, self).method...
在上面的示例中,`super().__init__(x)` 调用了父类的构造函数,而 `super().some_method()` ...
class C(B): def __init__(self): super().__init__() def method(self): print("In method of C") if __name__ == '__main__': print(C.__mro__) obj = C() s = super(C, obj) s.method() s = super(B, obj)
classsuper(object):"""super()->sameassuper(__class__,<first argument>)super(type)->unboundsuperobjectsuper(type,obj)->boundsuperobject;requiresisinstance(obj,type)super(type,type2)->boundsuperobject;requiresissubclass(type2,type)Typical use to call a cooperative superclass method:classC(B):de...