사용자 편의를 위해 __getattr__
및 __setattr__
으로 액세스/수정 가능한 dict
과 같은 객체를 구현하려고합니다. 클래스는 또한 다른 간단한 기능을 구현합니다.__getattr__ 및 __setattr__ 기능을 사용하여 dict-like 객체 구현
다음과 같이 내 구현은 현재, 템플릿으로 this answer 사용 :
from collections import MutableMapping
class Dictish (MutableMapping):
"""
A dict-like mapping object. vals are always coerced to str.
Should provide __getattr__ and __setattr__ as aliases for
__getitem__ and __setitem__.
"""
def __init__ (self, *args, **kwargs):
self.store = dict()
self.update(dict(*args,**kwargs))
def __getitem__ (self, key : str) -> str:
return self.store[key]
def __setitem__ (self, key : str, val : str) -> None:
self.store[key] = str(val)
def __delitem__ (self, key : str) -> None:
del self.store[key]
def __iter__ (self):
return iter(self.store)
def __len__ (self) -> int:
return len(self.store)
def __repr__ (self) -> str:
return repr(self.store)
# works fine by itself, but goes into infinite recursion
# when __setattr__ is defined
def __getattr__ (self, attr : str) -> str:
return self.__getitem__(attr)
# def __setattr__ (self, attr : str, val : str) -> None:
# self.__setitem__(attr,val)
모든 권장 사항 및/또는 견적을 환영합니다! – nivk