Question

J'ai un dictionnaire d'objets comme ça{'name1':oject_instance_1,'name2':oject_instance_2,'name3':oject_instance_3}Dans ma définition de classe d'objet, j'ai défini à la fois le __str__() method et le __repr__() méthode comme suit :

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__    

Au cas où il serait important que self.id soit une chaîne, self.genes soit une liste et self.length soit un entier

Le problème est que lorsque je vais imprimer ce dictionnaire, j'obtiens :

{'pid1003': <Pathway.Pathway instance at 0x10169d680>, 'pid1002': <Pathway.Pathway instance at 0x10169d638>, 'pid1001': <Pathway.Pathway instance at 0x10169d5f0>}

mais imprimer en boucle comme

for v in dict.values():
    print(v)

fonctionne bien.

Des idées pourquoi ?Merci!

Était-ce utile?

La solution

Peut-être que tu devrais mettre en œuvre __repr__, pas __repr.

Modifier:

Et __repr__ devrait renvoyer une chaîne, pas une fonction.Donc, comme indiqué dans les commentaires, revenez str(self).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top