Possible Duplicate:
Subclassing Python tuple with multiple __init__ arguments¿Cómo inicializar una instancia de una subclase de tupla en Python?
quiero definir una clase que hereda de tuple
, y quiero ser capaz de crear una instancia utilizando una sintaxis no es compatible con tuple
. Para un ejemplo simple, supongamos que quiero definir una clase MyTuple
que hereda de tuple
, y que puedo instanciar pasando dos valores, x
y y
, para crear la (mi) tupla (x, y)
. He intentado el siguiente código:
class MyTuple(tuple):
def __init__(self, x, y):
print("debug message")
super().__init__((x, y))
Pero cuando lo probé, por ejemplo, MyTuple(2, 3)
me dio un error: TypeError: tuple() takes at most 1 argument (2 given)
. Parece que mi función __init__
ni siquiera se llamó (en función del error que obtuve y del hecho de que mi "mensaje de depuración" no se imprimió).
Entonces, ¿cuál es la forma correcta de hacerlo?
Estoy usando Python 3.2.
Es posible que desee echar un vistazo a ['' collections.namedtuple() ''] (http://docs.python.org/dev/library/collections.html#collections.namedtuple). –
Verifique [esta pregunta original de SO] (http://stackoverflow.com/questions/1565374/subclassing-python-tuple-with-multiple-init-arguments) para obtener una respuesta completa sobre (1) por qué necesita usar ' __new__' en lugar de '__init__' (2) qué otros pasos debes seguir. –