2017-12-04 15 views
0

최근에 파이썬에서 dict 서브 클래스를 만들면 속성을 추가 할 수 있다는 것을 알았지 만, dict의 인스턴스에서는 그렇지 않습니다. 즉 :파이썬 dict 서브 클래스 인스턴스가 dict 인스턴스와 다르게 동작 함

class aDict(dict): 
    pass 

myDict = aDict({"name" : "A"}) 

myDict.color = "red" 

print(myDict.color) #"red" 

myOtherDict = dict({"name" : "B"}) 
myOtherDict.color = "green" #"AttributeError: 'dict' object has no attribute color" 

답변

0

당신은 myDict의이 객체에 부여 된 속성 사전이다 __dict__, 이것은 붙박이 사전 인 myOtherDict에 다른와 상호 작용한다.) (

dir(myDict) 
dir(myOtherDict) 

을 당신은 myDict의 DICT 속성을 통해 액세스보기 (와 바르 통해 myOtherDict에 속성의 부족을 비교할 수 있습니다 당신은 시도하여 당신이와 상호 작용하는 방법에 차이를 볼 수 있습니다

vars(myDict) 
vars(myOtherDict) 

문제를 이해하는 나에게 도움이 herehere 가능한 좀 더 많은 정보가있다.