正如标题所说,你如何记住super
's 参数的顺序?有没有我错过的助记符?
经过多年的 Python 编程,我仍然需要查找它:(
(为了记录,它是super(Type, self)
)
继承让我想到了一个分类层次。参数的顺序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)
允许访问未绑定的超类方法——可选参数总是排在最后。
我不。在 Python 3 中,我们可以只写
super().method(params)
通常,在定义super
内部使用class
。在那里,(再次通常),第一个参数super
应该始终是class
.
class Foo(object):
def __init__(self,*args,**kw):
super(Foo,self).__init__(*args,**kw)