Possible Duplicate:
Subclassing Python tuple with multiple __init__ argumentsCome inizializzare un'istanza di una sottoclasse di tupla in Python?
voglio definire una classe che eredita da tuple
, e voglio essere in grado di istanziare utilizzando una sintassi non supportato da tuple
. Per un semplice esempio, supponiamo di voler definire una classe MyTuple
che eredita da tuple
e che posso creare un'istanza passando due valori, x
e , per creare la (mia) tupla (x, y)
. Ho provato il seguente codice:
class MyTuple(tuple):
def __init__(self, x, y):
print("debug message")
super().__init__((x, y))
ma quando ho provato, per esempio, MyTuple(2, 3)
ho ottenuto un errore: TypeError: tuple() takes at most 1 argument (2 given)
. Sembra che la mia funzione __init__
non sia stata nemmeno chiamata (in base all'errore che ho ricevuto e sul fatto che il mio "messaggio di debug" non è stato stampato).
Quindi qual è il modo giusto per farlo?
Sto usando Python 3.2.
Si potrebbe dare un'occhiata a ['' collections.namedtuple() ''] (http://docs.python.org/dev/library/collections.html#collections.namedtuple). –
Si prega di controllare [questa domanda SO originale] (http://stackoverflow.com/questions/1565374/subclassing-python-tuple-with-multiple-init-arguments) per una risposta approfondita su (1) perché è necessario utilizzare ' __new__' invece di '__init__' (2) quali altri passi devi seguire. –