正如标题所说,你怎么记得super
的论点的顺序?我错过了什么地方的助记符?
经过多年的Python编程,我仍然需要查阅:(
(对于记录,它是super(Type, self)
)
答案 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)