문제
나는 그런 물건의 사전을 가지고 있습니다{'name1':oject_instance_1,'name2':oject_instance_2,'name3':oject_instance_3}
내 클래스 객체 정의에서 나는 두 가지를 모두 정의했습니다. __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.length는 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