객체 속성과 같은 Dict 키 액세스
원래 사전 키에 더 편리하게 액세스하기 위해 사용자 정의 getattr을 사용하여 AttributeDict 클래스를 고안했습니다. 및 setattr 메소드. 그러나 이 접근 방식은 본질적인 한계와 잠재적인 함정에 대한 우려를 불러일으킵니다.
Python에는 기본적으로 이 기능이 없기 때문에 잠재적인 경고가 있을 수 있습니다. 한 가지 주목할만한 단점은 저장된 키와 내장 사전 메서드 속성 간에 네임스페이스가 충돌할 가능성이 있다는 것입니다. 이로 인해 다음 예에서 볼 수 있듯이 예상치 못한 동작이 발생할 수 있습니다.
d = AttrDict() d.update({'items':['jacket', 'necktie', 'trousers']}) for k, v in d.items(): # TypeError: 'list' object is not callable print "Never reached!"
여기서 들어오는 데이터는 .items() 사전 메서드를 목록으로 덮어쓰므로 예상치 못한 오류가 발생합니다.
유사한 결과를 얻기 위한 더 효과적인 접근 방식은 클래스 내의 내부 dict 속성에 dict()의 하위 클래스를 할당하는 것입니다. 이렇게 하면 키에 대한 속성 액세스를 활성화하는 동시에 원본 사전의 기능이 유지됩니다.
class AttrDict(dict): def __init__(self, *args, **kwargs): super(AttrDict, self).__init__(*args, **kwargs) self.__dict__ = self
이 방법은 여러 가지 장점을 제공합니다.
하지만 잠재력도 있습니다. 단점:
위 내용은 Python에서 객체 속성으로 사전 키에 액세스하는 것이 안전하고 효율적인 방법입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!