dataclass abc
v0.0.8
ไลบรารี Python ที่ให้คุณกำหนดคุณสมบัตินามธรรมสำหรับคลาสข้อมูล เชื่อมช่องว่างระหว่างคลาสฐานนามธรรม (ABC) และคลาสข้อมูล
ติดตั้งไลบรารีโดยใช้ 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
การใช้ตัวตกแต่ง 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 = } ' )