Python:你怎么记得`super`的参数的顺序?

时间:2010-07-03 14:40:03

标签: python super

正如标题所说,你怎么记得super的论点的顺序?我错过了什么地方的助记符?

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

(对于记录,它是super(Type, self)

4 个答案:

答案 0 :(得分:11)

继承让我想到了分类层次结构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.

答案 1 :(得分:10)

只需记住self可选 - super(Type)可以访问未绑定的超类方法 - 并且可选参数总是最后的。

答案 2 :(得分:5)

我没有。在Python 3中我们可以写

super().method(params)

答案 3 :(得分:2)

通常,在super定义中使用class。在那里(通常),super的第一个参数应该始终是class的名称。

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