2011-07-07 2 views
3

클래스파이썬에서 동적으로 생성되는 __repr __ (self) 정의하기

class FooBar(object): 
    def __repr__(self): 
     pass 

__repr__ 함수를 구현하고 싶습니다. FooBar를 편리한 컨테이너로 사용하고 동적으로 몇 가지 속성을 추가했기 때문에 동적으로 __repr__을 생성한다고 생각했습니다. (이것이 잘못된 praxis라면 설명해 주시고 내게 계몽하십시오 :-))

나는 다음과 같이 생각했습니다 :

def __repr__(self): 
    return '<FooBar({WHAT IS ELEGANT AND GOES HERE?})>'.format(**self.__dict__) 

어떤 제안이 있습니까? 감사!

+0

하지 특정 충분한 정보를 참조 것보다 더 좋은 생각 {0!r}

사용해야 할 것입니다. 주걱. 너의 선택. 그것은 어떤 종류의 물건을 포함 할 것인가? –

+0

@Chris : 문자열 전용. – Aufwind

+0

질문 : 왜 동적 속성을 사용하고 있습니까? 예를 들어 사전을 사용할 수 없습니까? 예를 들어'' ''문자열을 저장하고 __repr__에'self.yourstring.format'을 실행하는 속성을 가질 수 있지만 다른 옵션을 사용하는 것이 좋습니다. – renatopp

답변

1
>>> '<FooBar({!r})>'.format({'a':1, 'b':2}) 
"<FooBar({'a': 1, 'b': 2})>" 

Python2.6에 당신은 내가

'<FooBar({!r})>'.format(vars(self)) 

.__dict__