문제

나는 그런 물건의 사전을 가지고 있습니다{'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).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top