dataclass abc
v0.0.8
데이터 클래스에 대한 추상 속성을 정의하여 ABC(추상 기본 클래스)와 데이터 클래스 간의 격차를 해소할 수 있는 Python 라이브러리입니다.
pip를 사용하여 라이브러리를 설치합니다.
pip install dataclassabc
dataclassabc
데코레이터를 사용하면 데이터 클래스 내에서 추상 속성을 사용할 수 있습니다. ABC(추상 기본 클래스)에 정의된 추상 속성을 확인하고 파생 데이터 클래스의 필드를 통해 구현을 적용합니다.
기본 클래스에서 추상 속성을 정의하고 파생 데이터 클래스에서 구현하는 방법은 다음과 같습니다.
from abc import ABC , abstractmethod
from dataclassabc import dataclassabc
# Define an abstract base class with an abstract property
class A ( ABC ):
@ property
@ abstractmethod
def name ( self ) -> str : ...
# Use the dataclassabc decorator to implement the abstract property in a dataclass
@ dataclassabc ( frozen = True )
class B ( A ):
# Implementing the abstract property 'name'
name : str
추상 속성을 구현하기 위해 dataclasses
모듈의 표준 dataclass
데코레이터를 사용하면 아래와 같이 TypeError가 발생합니다.
from abc import ABC , abstractmethod
from dataclasses import dataclass
@ dataclass ( frozen = True )
class B ( A ):
name : str
# TypeError: Can't instantiate abstract class B without an implementation for abstract method 'name'
b = B ( name = 'A' )
추상 클래스에서 @property
및 @name.setter
데코레이터를 사용하여 변경 가능한 추상 속성을 정의할 수 있습니다. 다음 예에서는 변경 가능한 속성을 정의하고 설정하는 방법을 보여줍니다.
from abc import ABC , abstractmethod
from dataclassabc import dataclassabc
class A ( ABC ):
@ property
@ abstractmethod
def name ( self ) -> str : ...
@ name . setter
@ abstractmethod
def name ( self , val : str ): ...
@ dataclassabc
class B ( A ):
name : str
b = B ( name = 'A' )
# modify the mutable variable
b . name = 'B'
# Output will be b=B(name='B')
print ( f' { b = } ' )