Pustaka Python yang memungkinkan Anda menentukan properti abstrak untuk kelas data, menjembatani kesenjangan antara kelas dasar abstrak (ABC) dan kelas data.
Instal perpustakaan menggunakan pip:
pip install dataclassabc
Dekorator dataclassabc
memungkinkan penggunaan properti abstrak dalam kelas data. Ini menyelesaikan properti abstrak yang ditentukan dalam kelas dasar abstrak (ABC) dan menerapkan implementasinya melalui bidang di kelas data turunan.
Inilah cara Anda mendefinisikan properti abstrak di kelas dasar dan mengimplementasikannya di kelas data turunan:
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
Menggunakan dekorator dataclass
standar dari modul dataclasses
untuk mengimplementasikan properti abstrak akan menghasilkan TypeError, seperti yang ditunjukkan di bawah ini:
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' )
Anda dapat menentukan properti abstrak yang dapat diubah dengan menggunakan dekorator @property
dan @name.setter
di kelas abstrak. Contoh berikut menunjukkan cara mendefinisikan dan mengatur properti yang bisa berubah:
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 = } ' )