DICT에서 PLIST 항목에 액세스합니다
-
07-07-2019 - |
문제
모듈 I에 plist (xml) 파일을 읽고 dict를 반환하는 클래스가 있습니다. 이것은 다음과 같은 말을 할 수 있기 때문에 매우 편리합니다.
Data.ServerNow.Property().DefaultChart
이것은 속성 사전, 특히 값을 반환합니다. DefaultChart
. 매우 우아합니다. 그러나 이런 식으로 사전을 조립하는 것은 실패합니다.
dict={'Data': 'text1', 'Name':'text2', 'Place':'text3]}
dict
명백한 독점과 똑같이 보입니다. 하지만 내가 말할 때
print TextNow.Data().Name
오류가 발생합니다
'dict' object has no attribute 'Name'
하지만 내가 말하면
print TextNow.Data()['Name']
갑자기 작동합니다!
누군가이 행동을 설명 할 수 있습니까? DICT를 XML-ish DICT로 변환하는 방법이 있습니까?
해결책
getAttr 재정의를 사용하여 사전 키를 속성으로 취급 할 수 있습니다.
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를 다음과 같은 경우 :
dict_ = {'a':'some text'}
당신은 그렇게 할 수 있습니다 :
>> print xmldict(dict_).a
some text
>> print xmldict(dict_).NonExistent
Traceback (most recent call last):
...
AttributeError: 'xmldict' object has no attribute 'NonExistent'
다른 팁
DOT 연산자가 Python 사전에 대한 적절한 액세서 구문이 아니기 때문에 작동하지 않습니다. 데이터 구조의 데이터 구성원에 액세스하기보다는 객체로 취급하고 속성에 액세스하려고합니다.
제휴하지 않습니다 StackOverflow