Ich möchte eine Klasse definieren, die von tuple
erbt, und ich möchte sie mit einer Syntax instanziieren, die nicht von tuple
unterstützt wird. Für ein einfaches Beispiel möchte ich sagen, dass ich eine Klasse MyTuple
definieren möchte, die von tuple
erbt und die ich instanziieren kann, indem ich zwei Werte, x
und y
, übergebe, um das (my) Tupel% co_de zu erzeugen %. Ich habe den folgenden Code ausprobiert:
Aber als ich versucht habe, zum Beispiel (x, y)
habe ich einen Fehler bekommen: MyTuple(2, 3)
. Es scheint, dass meine TypeError: tuple() takes at most 1 argument (2 given)
-Funktion nicht einmal aufgerufen wurde (basierend auf dem Fehler, den ich bekam und auf der Tatsache, dass meine "Debug-Nachricht" nicht gedruckt wurde).
Also, was ist der richtige Weg, dies zu tun?
Ich benutze Python 3.2.
Eine der Schwierigkeiten bei der Verwendung von super
besteht darin, dass Sie nicht kontrollieren, welche Klassenmethode mit dem gleichen Namen als nächstes aufgerufen wird. Daher müssen alle Methoden der Klassen die gleiche Signatur haben - mindestens die gleiche Anzahl von Elementen. Da Sie die Anzahl der an __new__
gesendeten Argumente ändern, können Sie super
nicht verwenden.
Oder wie Lattyware vorschlägt, könnten Sie ein namedtuple definieren,
%Vor%Tags und Links python python-3.x