2017-12-04 6 views
0

Wie überschreibe ich das Superklassenattribut? In dem folgenden Beispiel möchte ich einen anderen Wert für name verwenden.Wie überschreibe ich ein superclass __init__ Argument?

+0

Name ist nur der Variablenname. Sie können den Attributnamen der Basisklasse nicht von der geerbten Klasse ändern. Was versuchst du zu erreichen? – Vinny

+0

Übergeben Sie 'config.name + __value_only' an den Superklassenkonstruktor – Manjunath

+1

@Vinny für den Rekord, das ist eigentlich perfekt machbar. – jkm

Antwort

1

Übergeben Sie einfach den gewünschten "anderen" Wert an die super(...).__init__(). Auch name in Ihrem Beispiel ist keine Klasse, sondern eine Instanz Attribut:

class B(A): 
    def __init__(self, config, address, phone): 
     super(B, self).__init__(config.name + "__value_only") 
     self.address=address 
     self.phone=phone 
     self.config=config 
+0

Gibt es etwas besonders falsch es auf diese Weise bei der Definition: 'Klasse B (A): def __init __ (self, Config, Adresse, Telefonnummer): self.address = Adresse self.phone = Telefon self.config = config name = self.config.name + "__value_only" super (B, selbst) .__ init __ (name) ' – user3327034

+0

Nein, das wäre auch in Ordnung. – schwobaseggl

+0

großartig. Danke für die Bestätigung @schwobaseggl – user3327034

Verwandte Themen