Possible Duplicate:
Subclassing Python tuple with multiple __init__ argumentsJak zainicjować instancję podklasy krotki w Pythonie?
Chcę, aby zdefiniować klasę, która dziedziczy z tuple
i chcę, aby móc instancję za pomocą składni nie obsługiwanego przez tuple
. Dla prostego przykładu, powiedzmy, chcę zdefiniować klasę MyTuple
, która dziedziczy po tuple
i którą mogę utworzyć, przekazując dwie wartości, x
i y
, aby utworzyć (moją) krotkę (x, y)
. Próbowałem następujący kod:
class MyTuple(tuple):
def __init__(self, x, y):
print("debug message")
super().__init__((x, y))
Ale kiedy próbowałem na przykład MyTuple(2, 3)
mam błąd: TypeError: tuple() takes at most 1 argument (2 given)
. Wygląda na to, że moja funkcja __init__
nie została wywołana (w oparciu o błąd, który otrzymałem i na fakt, że moja "wiadomość debugowania" nie została wydrukowana).
Co jest właściwym sposobem na zrobienie tego?
Używam Python 3.2.
Możesz rzucić okiem na ['collections.namedtuple()' '] (http://docs.python.org/dev/library/collections.html#collections.namedtuple). –
Proszę sprawdzić [to oryginalne pytanie SO] (http://stackoverflow.com/questions/1565374/subclassing-python-tuple-with-multiple-init-arguments), aby uzyskać dokładną odpowiedź na (1) dlaczego musisz użyć '. __new__' zamiast '__init__' (2) jakie inne kroki musisz wykonać. –