Unterklassen Tupel mit mehreren __init__ - Argumente
Der folgende code funktioniert:
class Foo(tuple):
def __init__(self, b):
super(Foo, self).__init__(tuple(b))
if __name__ == '__main__':
print Foo([3, 4])
$ python play.py
Ergebnis:
play.py:4: DeprecationWarning: object.__init__() takes no parameters
super(Foo, self).__init__(tuple(b))
(3, 4)
Aber nicht die folgenden:
class Foo(tuple):
def __init__(self, a, b):
super(Foo, self).__init__(tuple(b))
if __name__ == '__main__':
print Foo(None, [3, 4])
$ python play.py
Ergebnis:
Traceback (most recent call last):
File "play.py", line 7, in <module>
print Foo(None, [3, 4])
TypeError: tuple() takes at most 1 argument (2 given)
Warum?
InformationsquelleAutor Sridhar Ratnakumar | 2009-10-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Da Tupel unveränderlich sind, müssen Sie überschreiben
__new__
statt:python docs
Wählen Sie den gesamten eingefügten text und klicken Sie auf das Zitat-Symbol (Schwarzes Symbol auf der Oberseite der text-box).
Hat nicht funktioniert, aber es hat Einzug es ein wenig
Ich ersetzte Sie alle mit _
Inline-code-tags sind besser als in diesem Beispiel.
InformationsquelleAutor John La Rooy
Zuordnen, um die Tupel mit dem Wert müssen Sie das überschreiben der
__new__
Methode:Die Argumente scheinen ignoriert zu werden von der
__init__
Umsetzung des tuple-Klasse, aber wenn Sie tun müssen, einige init-Sachen, die Sie tun können, Sie es wie folgt:InformationsquelleAutor Jonatan Anauati