파이썬의 데이터 클래스: 프라이머

파이썬의 데이터 클래스: 프라이머

데이터 클래스는 기본적으로 @dataclass 데코레이터가 있는 일반 파이썬 클래스입니다. 이름에서 알 수 있듯이 데이터 클래스는 일반적으로 주로 데이터 및 저장 상태를 포함하는 클래스에 대해 생성됩니다. 이 기능은 Python3.7에 도입되었지만 Python3.6에도 백포트되었다.

데이터 클래스는 실제로 클래스이므로 상속, 사용자 정의 메서드 및 기타 파이썬 클래스 기능을 자유롭게 사용할 수 있습니다.

파이썬 클래스 개요

데이터 클래스로 이동하기 전에 일반적인 파이썬 클래스에 대해 간단히 다시 살펴보겠습니다.

클래스는 개체 생성자와 유사하므로 개체를 생성하기 위한 사용자 정의 청사진으로 볼 수 있습니다. 개체는 클래스의 인스턴스이며 데이터와 기능을 함께 번들하는 방법으로 속성과 메서드를 가지고 있습니다.

특성

클래스 개체 내에서 변수(속성)로 간주할 수 있습니다. 위의 예를 들어 빵 개체를 인스턴스화하면 이름 단위 가격 등의 속성을 bread.name 빵 가격 등을 통해 확인할 수 있다.

방법들

클래스에 상주하는 기능으로 간주할 수 있습니다. 위의 예에서 calc_stock_value() 는 Inventory 클래스의 메서드로, 인스턴스인 bread 로 호출할 수 있습니다.

파이썬 데이터 클래스

데이터 클래스가 정규 클래스와 다른 점은 데이터 클래스 장식자인 @dataclass 가 클래스에 대한 일련의 특수 메서드를 자동으로 생성하고 유지 관리하여 상용구 코드를 줄일 수 있다는 것이다. 이러한 방법은 크게 다음과 같이 분류할 수 있습니다.

위의 코드 블록에는 이러한 메서드가 없지만 장식자가 백그라운드에서 메소드를 처리하므로 초기화, 표현 및 비교 섹션은 계속 작동합니다.

초기화 방법

_init__ 메소드는 C++ 및 Java의 생성자와 유사하다. 개체의 상태를 초기화하는 데 사용되며 개체를 만들 때 실행됩니다.

아래의 정규 파이썬 클래스의 _init__ 의 일부를 고려해보자.

# 정규 클래스의 __init__ def __init_(자기, 이름): self.name = 이름

단순히 사물을 초기화시키기 위해 이름 이라는 단어가 3번 반복되는지 관찰한다. 여기에다 객체지향 프로그래밍(OOP) 개념을 처음 접하는 초보자들에게 다중자신의 존재는 혼란스러울 수 있다.

반대로 데이터 클래스에서는 _init__ 메서드가 필요하지 않습니다. 변수 주석을 사용하여 클래스 정의 아래에 데이터 클래스에 필요한 필드를 나열하기만 하면 됩니다.

표현법

__repr__ 을 명시적으로 정의하지 않고 일반 파이썬 클래스에서 개체를 인쇄할 때, 결과에 인스턴스에 대한 유용한 정보가 제공되지 않습니다.

빵 = 재고('빵', 10, 2.5) 인쇄하다. # <_main_을 반환합니다.재고 물체는 0x7f9fca781700>에 있습니다.

_repr__ 메서드는 개체를 보다 잘 대표할 수 있는 뷰를 제공하므로 디버깅할 때 특히 유용합니다. 정규 클래스에는 아래와 같이 custom __repr_ 메서드가 필요합니다.

이와는 대조적으로 이 메서드는 기본적으로 데이터 클래스 장식자에 의해 처리됩니다.

비교 방법

기본 객체 비교를 수행하려면 다음과 같이 __eq__ 와 같은 비교 방법을 정규 파이썬 클래스에서 정의해야 합니다.

다시 한 번 데이터 클래스 장식자는 이 기능을 자동으로 관리하므로 메서드에 대한 명확한 정의가 필요하지 않습니다.

Python 데이터 클래스 특징 2가지

다음 개념은 데이터 클래스 전용이 아닙니다.

그러나 데이터 클래스는 아래 코드에 나와 있는 대로 데이터를 깔끔하게 구현할 수 있는 방법을 제공하며 가독성을 개선합니다.

기본값

파이썬에서 정규 클래스를 정의할 때 기본값 할당 및 유형 힌팅은 __init__ 메서드로 수행됩니다. 위의 데이터 클래스 정의가 아래의 코드 블록에 비해 훨씬 더 깔끔하다는 데 동의해 주셨으면 합니다.

유형 힌팅

데이터 클래스에서 특성(필드)을 정의할 때 힌팅은 필수 입력 사항입니다. 필드에 없으면 속성이 무시되고 데이터 클래스의 일부가 아닙니다.

데이터 클래스 필드에 정확한 유형을 지정하지 않으려면 Any 유형(위 데이터 클래스 예제의 할인 필드 참조)을 사용하는 것이 좋습니다.

이러한 데이터 유형은 런타임에 강제 적용되지 않습니다. 타이프 오류를 잡으려면 mypy와 같은 패키지를 사용하는 것이 좋습니다.

요약

데이터 클래스는 파이썬 3.7에 도입된 새로운 기능이다. 다음을 지원하므로 대부분 속성으로 구성된 클래스를 만들려는 경우 유용합니다.

시간을 내어 제 기사를 읽어 주셔서 감사합니다. 읽은 내용이 마음에 드신다면 아래의 내용을 확인해 보십시오.

from http://top-poster.tistory.com/25 by ccl(A) rewrite - 2021-09-24 05:01:19