вызов str для словаря объектов
Вопрос
У меня есть словарь объектов, подобных этому
{'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)
.
Не связан с StackOverflow