Python:你怎么记得'super`';谁的论点?

Python:你怎么记得'super`';谁的论点?,python,super,Python,Super,正如标题所说,您如何记住super参数的顺序?有没有我错过的记忆法 经过多年的Python编程,我仍然需要查找:( (作为记录,它是super(Type,self))我不知道。在Python3中,我们只需编写 super().method(params) 继承让我想到一个分类层次结构。super的参数顺序是层次结构的:首先是类,然后是实例 另一个灵感来自~unutbu的答案: class Fubb(object): def __init__(self, *args, **kw):

正如标题所说,您如何记住
super
参数的顺序?有没有我错过的记忆法

经过多年的Python编程,我仍然需要查找:(


(作为记录,它是
super(Type,self)

我不知道。在Python3中,我们只需编写

super().method(params)

继承让我想到一个分类层次结构
super
的参数顺序是层次结构的:首先是类,然后是实例

另一个灵感来自~unutbu的答案:

class Fubb(object):
    def __init__(self, *args, **kw):
        # Crap, I can't remember how super() goes!?
建立正确的
super()
调用的步骤

__init__(self, *args, **kw)              # Copy the original method signature.

super(Fubb).__init__(self, *args, **kw)  # Add super(Type).
                     /
              -------
             /
super(Fubb, self).__init__(*args, **kw)  # Move 'self', but preserve order.

只需记住,
self
是可选的-
super(Type)
允许访问未绑定的超类方法-可选参数总是排在最后。

通常,
super
类的定义中使用,超级
的第一个参数应该始终是
的名称

class Foo(object):
    def __init__(self,*args,**kw):
        super(Foo,self).__init__(*args,**kw)

有趣。仍然在Python2.6上,所以还没有看到这一点(虽然我现在不确定我是否认为这
看起来更优雅/正确)啊,也很有趣-我没有意识到这一点。