chiamando str su un dizionario di oggetti
Domanda
Ho un dizionario di oggetti come così
{'name1':oject_instance_1,'name2':oject_instance_2,'name3':oject_instance_3}
.
Nella mia classe definizione di oggetti, ho definito sia il __str__() method
che il metodo __repr__()
come segue:
def __str__(self):
return('{0} pathway containing {1} genes, with a total sequence length of {2}'.format(self.id, len(self.genes), self.length))
def __repr(self):
return self.__str__
.
Nel caso in cui sia importante sé.ID è una stringa, self.genes è un elenco, e self.length è un int
Il problema è quando vado a stampare questo dizionario ottengo:
{'pid1003': <Pathway.Pathway instance at 0x10169d680>, 'pid1002': <Pathway.Pathway instance at 0x10169d638>, 'pid1001': <Pathway.Pathway instance at 0x10169d5f0>}
.
Ma stampa in un loop come
for v in dict.values():
print(v)
.
funziona bene.
Qualche idea Perché? Grazie!
Soluzione
Forse dovresti implementare __repr__
, non __repr
.
Modifica:
e __repr__
dovrebbero restituire una stringa, non una funzione.Quindi, come notato nei commenti, restituire str(self)
.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow