개발하자
파이썬에서 작동하는 특성 모듈을 어떻게 얻을 수 있나요?
Cuire
2023. 6. 1. 07:13
반응형
파이썬에서 작동하는 특성 모듈을 어떻게 얻을 수 있나요?
다음 예제를 실행합니다:
from attrdict import AttrDict
a = AttrDict({'foo': 'bar'})
print(a.foo)
하지만 다음 오류가 발생했습니다:
어떻게 해결해야 하나요? 나는 그것이 벌레 같아요. 파일 내부를 살펴보니 파일에 몇 가지 문제가 있었습니다:
:
이 프로젝트는 파이썬 3.10으로의 이동 변경으로 인해 중단되었지만 2019년에 비활성으로 표시된 이후로 이 문제는 수정되지 않았다.
나는 A를 찾았지만 그런 일은 없었던 것 같다. 다른 방법을 찾아야 할 것 같아요, 확인해 보세요.
수집 모듈을 다른 곳으로 가져오기 전에 앱 시작 부분 근처에 원숭이 패치를 적용할 수 있습니다.
# Monkey patch collections
import collections
import collections.abc
for type_name in collections.abc.__all__:
setattr(collections, type_name, getattr(collections.abc, type_name))
나는 적당한 대안을 찾고 있었지만 찾을 수 없었다. 저는 AttrDict 프로젝트의 포크를 만들었습니다. 코드 리팩터링을 수행했고 프로젝트의 모든 측면을 철저히 테스트했습니다. 또한 포크된 프로젝트가 3.8에서 최신 버전인 파이썬 3.11까지 파이썬 버전과 완벽하게 호환되도록 보장했습니다. 만약 당신이 대안이 필요하다면, 당신은 이 패키지를 사용할 수 있습니다.
필요한 것이 몇 줄의 코드로 고유 속성을 만들 수 있습니다:
from collections import UserDict
class AttrDict(UserDict):
def __getattr__(self, key):
return self.__getitem__(self, key)
def __setattr__(self, key, value):
if key == "data":
return super().__setattr__(key, value)
return self.__setitem__(key, value)
그리고 당신은 끝났어요. ("데이터"라는 속성은 UserDict에서 내부적으로 사용되기 때문에 작동하지 않습니다. 정말로 필요하다면 몇 줄의 추가 작업이 필요합니다.)
반응형