dict
의 하위 클래스를 문자열 키에서 임의 유형의 값으로 매핑합니다. 키가 정규 표현식이면 별도로 저장되고 쿼리됩니다. 이 클래스는 (I 상속을 사용해야하는 이유입니다) 다른 라이브러리에 의해 사용되므로Python 상속 : 오버라이드되지 않은 메소드가 호출 될 때 오류 발생
class RegexDict(dict):
def __init__(self):
super().__init__() # non-regex keys in the parent class
self.regex_dict = {} # regex keys in the child class
def __getitem__(self, key):
try:
return super().__getitem__(key)
except KeyError:
for x in self.regex_dict:
if re.fullmatch(x, key):
return self.regex_dict[x]
raise KeyError(key)
def __setitem__(self, key, value):
key, is_regex = key
if is_regex:
self.regex_dict[key] = value
else:
super().__setitem__(key, value)
, 나는 기본 클래스에서 비 오버라이드 (override) 메소드가 호출 될 때 오류가 발생합니다 있는지 확인하려면. 어떻게해야합니까?
슬프게도, 나의 경험에서 상속 * MutableMapping * 많은 팬더, 심지어 주류처럼 * 팬더 * 충분하지 않습니다. 또한, 상자 밖에서 작업하는 방법은 OP 요구 사항과 반대되는 것으로 보입니다. – pacholik
이것은 실제로 이상적인 경우이지만 클래스를'pandas '로 작업하게 만들 필요가 있습니다. 내부적으로'pandas'는'np.dtype()'을 호출합니다. 이것은 불행하게도 커스텀 타입과 호환되지 않습니다. –