Как в заголовке говорится, как Вы помните порядок super
аргументы? Существует ли мнемосхема где-нибудь, я отсутствовал?
После лет программирования 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
используется внутри определения класса
. Здесь (опять же обычно) первым аргументом super
всегда должно быть имя класса
.
class Foo(object):
def __init__(self,*args,**kw):
super(Foo,self).__init__(*args,**kw)