Unterklasse – Argumente aus der Superklasse

Ich bin ein wenig verwirrt darüber, wie Argumente zwischen Unterklassen und Superclasses in Python übergeben werden. Betrachten Sie die folgende Klassenstruktur:

class Superclass(object): def __init__(self, arg1, arg2, arg3): #Inilitize some variables #Call some methods class Subclass(Superclass): def __init__(self): super(Subclass, self).__init__() #Call a subclass only method 

Wo ich Schwierigkeiten habe, versteht, wie Argumente zwischen der Superklasse und der Unterklasse geführt werden. Ist es notwendig, alle Superclass-Argumente im Unterklassen-Initialisierer neu aufzulisten? Wo wäre neu, nur Unterklasse, Argumente werden angegeben? Wenn ich versuche, den Code oben zu verwenden, um eine Unterklasse zu instanziieren, erwartet es nur 1 Argument, nicht das Original 4 (einschließlich Selbst), das ich aufgeführt habe.

 TypeError: __init__() takes exactly 1 argument (4 given) 

One Solution collect form web for “Unterklasse – Argumente aus der Superklasse”

Es gibt keine Magie! __init__ Methoden funktionieren wie alle anderen. Sie müssen explizit alle Argumente, die Sie benötigen, in der Unterklasse Initialisierer, und übergeben sie durch die Superklasse.

 class Superclass(object): def __init__(self, arg1, arg2, arg3): #Initialise some variables #Call some methods class Subclass(Superclass): def __init__(self, subclass_arg1, *args, **kwargs): super(Subclass, self).__init__(*args, **kwargs) #Call a subclass only method 

Wenn du Subclass(arg1, arg2, arg3) Python nennt nur Subclass.__init__(<the instance>, arg1, arg2, arg3) . Es wird nicht magisch versuchen, einige der Argumente an die Superklasse und einige an die Unterklasse anzupassen.

  • In Python, wie kann ich angeben, dass ich eine Methode überschreibe?
  • Wie kann ich ein OrderedDict subklassen?
  • Erfassen von docstrings in Python-Klasse-Vererbung
  • Python-Import-Problem
  • So verwenden Sie namedtuples in Mehrfachvererbung
  • Endgültige Klassen in Python 3.x - etwas Guido sagt mir nicht?
  • Python 2.7 __init __ () nimmt genau 2 argumente (3 gegeben)
  • Numpy Matrix-Klasse: Default-Konstruktorattribute für die geerbte Klasse
  • Python super (Klasse, Selbst) .method vs super (Elternteil, Selbst)
  • Python, Vererbung, super () Methode
  • Python - Zugriff auf Superklasseattribute
  • Python ist die beste Programmiersprache der Welt.