python - 사전 인 self 형식 지정

기사 출처 python python-3.x

이 경우 format(self)를 작동시키는 방법은 무엇입니까?

class Commit:
    number = None
    sha = None
    message = None
    identity = None

    def __init__(self, raw, number):
        r = raw.commits[number]

        self.number = number
        self.sha = r['sha']
        self.message = r['message']
        self.identity = raw.identities[r['identity']]

    def __str__(self):
        return """
Commit {number} {sha}
Message {message}
Identity {identity}
""".format(self)

    def __getitem__(self, attr):
        return getattr(self, attr)
    def __contains__(self, attr):
        return hasattr(self, attr)


그런 다음 개별 속성에 액세스하려고하면

c = Commit(raw, 170)
print(c['sha'])


예를 들어 작동합니다. 그러나 내가 직접 print(c)하면 다음과 같이 말합니다.


KeyError : '숫자'


format()__getitem__()를 통해 필요한 속성을 가져올 것으로 예상했을 것입니다.

작동시키는 방법?
아니요, **self를 사용하고 더 많은 매핑 방법을 지원해야합니다.

그러나 속성 액세스에 대한 형식 지원을 대신 사용하는 것이 훨씬 낫습니다.

    def __str__(self):
        return """
Commit {0.number} {0.sha}
Message {0.message}
Identity {0.identity}
""".format(self)


이제 속성 액세스를 사용하여 첫 번째 위치 인수에서 numbermessage에 대한 .format(), self 등을 찾습니다.

이 질문에 대해 Stack Overflow에서 비슷한 토론을 찾았습니다: https://stackoverflow.com/questions/13933160/

관련 기사
python - 서로 상대적인 Python 필터 목록 항목
python - 비 루트 사용자로서의 감독자 [닫힘]
python - REST API의 일반 (HTML이 아닌) 오류 페이지
python - 지정된 바이트 오프셋에서 파일에서 행 가져 오기
python - 파이썬의 백 슬래시 이스케이프 문자 이해
python - Simplegui 가져 오기 문제
python - 한 번에 여러 파일 쓰기
python - 최소 차 제곱합을 찾는 알고리즘
python - Python에서 베어 함수 객체가 유효한 코드 인 이유는 무엇입니까? [닫은]
python - 예외에서 루프를 종료하지만 모든 예외 유형을 다시 발생시키지 않는 방법은 무엇입니까?