2009-09-16 5 views
0

나는 plist (XML) 파일을 읽고 dict를 반환하는 모듈에 클래스가 있습니다.dict의 Plist 항목에 액세스

Data.ServerNow.Property().DefaultChart 

이것은 속성 사전, DefaultChart에 대한 구체적 값을 반환 : 뭔가처럼 말할 수 있기 때문에 매우 편리합니다. 매우 우아합니다. 그러나, 사전 이런 식으로 조립하는 것은 실패

dict={'Data': 'text1', 'Name':'text2', 'Place':'text3]} 

dict 정확히 PLIST의 DICT 것 같습니다. 내가

print TextNow.Data().Name 

을 말할 때 는하지만 오류

'dict' object has no attribute 'Name' 

얻을하지만

print TextNow.Data()['Name'] 

갑자기 작동 말한다면!

누군가가이 동작을 설명 할 수 있습니까? dict을 XML-ish dict로 변환 할 수있는 방법이 있습니까?

답변

1

당신은 속성과 사전 키, 예를 치료하기 위해 getattr 재정을 사용할 수 있습니다

>> print xmldict(dict_).a 
some text 
>> print xmldict(dict_).NonExistent 
Traceback (most recent call last): 
    ... 
AttributeError: 'xmldict' object has no attribute 'NonExistent' 
2

도트 연산자가 파이썬 사전에 대한 적절한 접근 자 구문이 아니기 때문에 작동하지 않습니다. 데이터 구조의 데이터 멤버에 액세스하는 대신 개체를 개체로 처리하고 속성에 액세스하려고합니다.

dict_ = {'a':'some text'} 

당신은 그렇게 할 수 있습니다 :

class xmldict(dict): 
    def __getattr__(self, attr): 
     try: 
      return object.__getattribute__(self, attr) 
     except AttributeError: 
      if attr in self: 
       return self[attr] 
      else: 
       raise 

따라서 예를 들어 당신이 DICT 다음과 같은 것이다 경우 :

+0

감사합니다. 필자가 plist를 작성하고 그 파일을 사전에로드하는 것이 더 쉬웠다는 것을 알았습니다. 어쨌든해야합니다. – Gnarlodious