Escribí una clase en python que implementa __str__(self)
pero cuando uso print en una lista que contiene instancias de esta clase, obtengo la salida predeterminada <__main__.DSequence instance at 0x4b8c10>
. ¿Hay alguna otra función mágica que deba implementar para que funcione, o debo escribir una función de impresión personalizada?Cómo imprimir una lista, dict o colección de objetos, en Python
Aquí está la clase:
class DSequence:
def __init__(self, sid, seq):
"""Sequence object for a dummy dna string"""
self.sid = sid
self.seq = seq
def __iter__(self):
return self
def __str__(self):
return '[' + str(self.sid) + '] -> [' + str(self.seq) + ']'
def next(self):
if self.index == 0:
raise StopIteration
self.index = self.index - 1
return self.seq[self.index]
¿Vale la pena conforme a lo que el manual dice "Si es posible, esto debe verse como una expresión válida en Python que podría ser utilizado para recrear una objeto con el mismo valor (dado un entorno apropiado) ". ¿Algo así como DSequence (1, 'GTTAC')? –
Es una buena idea, sí. –
Ok, también encontré esto q para ese http://stackoverflow.com/questions/452300/python-object-reprself-should-be-an-expression Gracias por su ayuda. –