Вопрос

У меня есть словарь объектов, подобных этому {'name1':oject_instance_1,'name2':oject_instance_2,'name3':oject_instance_3} В моем определении класса object я определил оба __str__() method и __repr__() способ следующим образом:

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__    

На случай, если это важно self.id - строка, self.genes - список, а self.длина - int

Проблема в том, что когда я иду печатать этот словарь, я получаю:

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

но печать в цикле, подобном

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

работает нормально.

Есть идеи, почему?Спасибо!

Это было полезно?

Решение

Возможно, вам следует реализовать __repr__, не __repr.

Редактировать:

И __repr__ должен возвращать строку, а не функцию.Итак, как было отмечено в комментариях, возвращаем str(self).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top