python
Python Attrs 패키지를 사용하면 간단한 주석을 사용하여 고급 데이터 클래스를 만들 수 있습니다. 물론 python에는 고유한 기본 데이터 클래스 모듈도 있지만 Python attrs 패키지는 여러분이 좋아할 만한 몇 가지 추가 기능을 제공합니다!
목차
<내비>attrs 패키지는 기본 라이브러리의 일부가 아니므로 pip install 명령 또는 Pipenv와 같은 유사한 것으로 설치해야 합니다. 다른 프로젝트를 방해하지 않도록 가상 환경을 만들고 싶을 수도 있습니다. 패키지 이름은 attrs이므로 설치는 다음과 같습니다.
$ pip install attrs # or with pipenv: $ pipenv install attrs
attrs
의 작성자 실제로 Python에 데이터 클래스를 도입한 PEP에서 작업했습니다. Python의 기본 데이터 클래스는 의도적으로 더 간단하고 이해하기 쉽게 유지하면서 attr은 원하는 모든 기능을 제공합니다!
Python attrs
을 선택해야 하는 몇 가지 이유 내장 데이터 클래스는 다음과 같습니다.
먼저 매우 기본적인 예를 살펴보겠습니다.
import attr @attr.s class Person(object): name = attr.ib(default='John') surname = attr.ib(default='Doe') age = attr.ib(init=False) p = Person() print(p) p = Person('Bill', 'Gates') p.age = 60 print(p) # Output: # Person(name='John', surname='Doe', age=NOTHING) # Person(name='Bill', surname='Gates', age=60)
몇 가지 관찰:
attr.ib
과 같이 현명하게 선택된 이름을 사용합니다. , 그래서 당신은 attr을 가져오기만 하면 됩니다. 또는 전체 이름을 가져올 수 있습니다. 예를 들어 from attr import attrib, attrs
, 대신 해당 이름을 사용하십시오. 기능은 동일합니다.다음으로 이 패키지가 일반 데이터 클래스에 대해 제공하는 가장 중요한 기능인 유효성 검사기와 변환기를 살펴보겠습니다.
두 가지 방법으로 attr 데이터 클래스에 유효성 검사기를 추가할 수 있습니다.
여기서 먼저 호출 가능한 함수 메서드를 보여 드리겠습니다. Attrs는 즉시 사용할 수 있는 여러 유효성 검사기를 제공하며 그 중 instance_of
을 사용합니다. 다음 예에서 유효성 검사기:
>>> @attr.s ... class C(object): ... x = attr.ib(validator=attr.validators.instance_of(int)) >>> C(42) C(x=42) >>> C("a string") Traceback (most recent call last): ... TypeError: ("'x' must be <type 'int'> (got 'a string' that is a <type 'str'>).", ...
x에 대한 문자열 값을 사용하여 객체 C를 생성하려고 했기 때문에 instance_of 유효성 검사기는 문자열 대신 int 유형이 필요하기 때문에 오류가 발생합니다.
이제 자체 유효성 검사기를 정의해 보겠습니다.
import attr @attr.s class DividableByTwo(object): x = attr.ib() @x.validator def check(self, attribute, value): if value % 2 != 0: raise ValueError(f'{value} is not dividable by 2') print (DividableByTwo(60)) print (DividableByTwo(11)) # Output will be something like: # DividableByTwo(x=60) # ... # ValueError: 11 is not dividable by 2
변환기는 설정된 값을 가져와 자동으로 변환합니다. 당신은 모든 종류의 목적을 위해 이것을 사용할 수 있습니다. 한 가지 예는 값을 자동으로 int로 변환하는 것입니다. 다시, 호출 가능한 함수를 사용하여 시작하겠습니다. 이 경우에는 단순히 Python의 int() 함수를 사용합니다.
import attr @attr.s class C(object): x = attr.ib(converter=int) c = C("1") print(c) # Output: # C(x=1)
우리의 입력(문자열 "1")은 자동으로 정수로 변환되었습니다. 변환기는 유효성 검사기보다 먼저 실행되기 때문에 변환 후 최종 값의 유효성을 검사할 수 있습니다. 예를 들어 위의 두 가지 예를 들어 먼저 입력을 int로 변환한 다음 값이 2로 나눌 수 있는지 확인할 수 있습니다.
마지막으로 슬롯 클래스를 사용하도록 attrs에 지시할 수 있습니다. 슬롯 클래스는 일반 클래스보다 몇 가지 장점이 있습니다.
간단히 말해서 슬롯형 클래스를 사용하면 개체 인스턴스가 가질 것으로 기대하는 인스턴스 속성을 명시적으로 명시합니다. 이런 식으로 Python은 몇 가지 검사 등을 생략할 수 있으므로 메모리 사용량이 줄어들고 속도가 약간 빨라집니다. 여기 attr 문서에서 자세한 내용을 찾을 수 있습니다.
그러나 슬롯 클래스에는 특히 수동으로 생성할 때 주의 사항이 있습니다. 다행히 attrs는 기능을 활성화하는 간단한 방법을 제공합니다.
import attr @attr.s(slots=True) class YourClassName: ...
python
Python 생태계에서 생각할 수 있는 거의 모든 것을 위한 패키지가 있으며, 모두 간단한 pip 명령으로 설치할 수 있습니다. 따라서 Python에도 이모티콘을 사용할 수 있는 패키지가 있다는 사실에 놀라지 마세요. 다음을 사용하여 이모티콘 패키지를 설치할 수 있습니다. $ pip3 install emoji 이 패키지를 사용하면 유니코드 이모티콘을 문자열 버전으로 또는 그 반대로 변환할 수 있습니다. import emoji result = emoji.emojize(Python is :thumbs_up:) print(result
이 게시물은 다음이 공동 작성했습니다. 코스민 니콜라. Nicolae는 UiPath의 제품 관리자입니다. 비정형 데이터는 문서, 오디오 파일, 비디오, 이메일, 이미지, 로그 파일 등 어디에나 숨어 있습니다. 목록은 계속됩니다. 실제로 비정형 데이터는 현재 전체 데이터의 약 80~90%를 차지합니다. 그러나 비정형 데이터의 풍부함과 가치에도 불구하고 기업이 이를 추출하고 분석하는 데 필요한 도구가 부족하기 때문에 비정형 데이터는 여전히 가장 낭비되는 엔터프라이즈 리소스 중 하나입니다. 이는 구조화된 데이터가 필요한 빅 데이터