2011-08-03 6 views
0

큰 사전이 있습니다. 각 키 값 쌍을 클래스의 특성에 할당하고 싶습니다. 현재 나는 아래 스 니펫 라인을 따라 뭔가를 가지고 있습니다. 그것은 작동하지만, 그것은 꽤 아니에요. 이 작업을 수행하는 더 좋은 방법이 있습니까?사전에서 속성 값 할당

의사 파이썬 조각 :

config = A large dictionary 

self.Width = config['width'] 
self.Height = config['height'] 
self.Text = config['text'] 
self.Font = config['font'] 
etc... 

답변

5

아주 간단 :

for key, value in config.iteritems(): 
    # Customize key here, for example transform 'text_height' to 'TextHeight' or 
    # use 'key.title()' to obtain titlecased keys... 
    setattr(self, key, value) 

당신은 key.title()을 수행 할 수 있습니다,하지만 인스턴스 속성은 파이썬의 모든 소문자로 제안된다. 당신은 타이틀 케이스에 대해 걱정하지 않는 경우

+1

사용'key.title을() ''폭 '속성에'폭 '키를 변환 할 수 있습니다. – PaulMcG

+0

@Paul : 더 빠름;) – GaretJax

+0

다중 단어 키의 경우 어떻게되는지 고려하는 것이 좋습니다. 예를 들어'config [ 'text_height']'는'self.TextHeight'에 할당되어야합니까? –

2

, 당신은 다만 수 :

self.__dict__.update(config) 
+0

클래스가'@property' 또는 커스텀'__setattr__' 메소드를 정의하면 작동하지 않습니다. – GaretJax

+0

@ GaretJax : 나는 약간의 해킹을한다. ... 종류가 방금 거기서 던져서 화염에 빠졌는지 아닌지를 확인했습니다. 그 두 경우는 거대한 제한 사항처럼 보이지는 않습니다. (아마도 몇 가지 더 숨겨진 경고가있을 것입니다) – Gerrat

+0

예, 구식 클래스 ...;) – GaretJax