Domanda

Come dice il titolo, come si fa a ricordare l'ordine degli argomenti di super? C'è una qualche parte mnemonico che ho perso?

Dopo anni di programmazione Python, devo ancora guardare in su: (

(per la cronaca, è super(Type, self))

È stato utile?

Soluzione

L'eredità mi fa pensare ad una classificazione gerarchia . E l'ordine degli argomenti di super è gerarchica:. Prima della classe, quindi l'istanza

Un'altra idea, ispirata alla risposta da ~ unutbu:

class Fubb(object):
    def __init__(self, *args, **kw):
        # Crap, I can't remember how super() goes!?

Passi nella costruzione di una chiamata super() corretta.

__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.

Altri suggerimenti

È sufficiente ricordare che il self è opzionale - super(Type) dà accesso ai metodi della superclasse non legati -. E argomenti opzionali vengono sempre ultima

non lo faccio. In Python 3 possiamo solo scrivere

super().method(params)

In genere, super è all'interno usato di una definizione class. Lì, (ancora una volta in genere), il primo argomento di super dovrebbe sempre essere il nome del class.

class Foo(object):
    def __init__(self,*args,**kw):
        super(Foo,self).__init__(*args,**kw)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top