dataclass abc
v0.0.8
مكتبة بايثون تسمح لك بتحديد الخصائص المجردة لفئات البيانات، مما يؤدي إلى سد الفجوة بين الفئات الأساسية المجردة (ABCs) وفئات البيانات.
تثبيت المكتبة باستخدام النقطة:
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
سيؤدي استخدام مُزخرف dataclass
القياسي من وحدة dataclasses
لتنفيذ الخصائص المجردة إلى خطأ 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 = } ' )