Python: как Вы помните порядок 'супер аргументов?

Как в заголовке говорится, как Вы помните порядок superаргументы? Существует ли мнемосхема где-нибудь, я отсутствовал?

После лет программирования Python я все еще должен искать его :(

(для записи это super(Type, self))

7
задан David Wolever 3 July 2010 в 14:40
поделиться

4 ответа

Наследование заставляет меня думать о классификационной иерархии . И порядок аргументов для 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.
11
ответ дан 6 December 2019 в 06:23
поделиться

Просто помните, что self является необязательным - super (Type) дает доступ к несвязанным методам суперкласса - а необязательные аргументы всегда идут последними.

10
ответ дан 6 December 2019 в 06:23
поделиться

Я не делаю. В Python 3 мы можем просто написать

super().method(params)
5
ответ дан 6 December 2019 в 06:23
поделиться

Обычно super используется внутри определения класса . Здесь (опять же обычно) первым аргументом super всегда должно быть имя класса .

class Foo(object):
    def __init__(self,*args,**kw):
        super(Foo,self).__init__(*args,**kw)
2
ответ дан 6 December 2019 в 06:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: