예를 들어 서브 클래스를 dict만들고 모든 키를 대문자로 가정한다고 가정 해 보겠습니다 .
class capdict(dict):
def __init__(self,*args,**kwds):
super().__init__(*args,**kwds)
mod = [(k.capitalize(),v) for k,v in super().items()]
super().clear()
super().update(mod)
def __getitem__(self,key):
return super().__getitem__(key.capitalize())
def __setitem__(self,key,value):
super().__setitem__(key.capitalize(),value)
def __delitem__(self,key):
super().__detitem__(key.capitalize())
이것은 어느 정도 작동합니다.
>>> ex = capdict(map(reversed,enumerate("abc")))
>>> ex
{'A': 0, 'B': 1, 'C': 2}
>>> ex['a']
0
물론, 예를 들어 구현하려고 기억 한 방법에 대해서만
>>> 'a' in ex
False
원하는 행동이 아닙니다.
이제 "핵심"방법에서 파생 될 수있는 모든 방법을 채우는 게으른 방법이 섞일 것입니다 collections.abc.MutableMapping. 여기서는 작동하지 않습니다. 문제의 메소드 ( __contains__예 :) 가 이미에서 제공 했기 때문에 추측 합니다 dict.
내 케이크를 먹고 먹는 방법이 있습니까? MutableMapping내가 재정의 한 메소드 만 볼 수 있도록하는 마술 은 그 방법을 기반으로 다른 방법을 다시 구현합니까?
@martineau는 감사합니다.
—
Paul Panzer
사용할 수 있습니다
—
피터 우드
os._Environ.
MutableMapping. 대소 문자 구분없는 사전을 참조하십시오 .