当使用 'dataclasses.dataclass' 创建数据结构时,您可以选择将其放在类内或类外,具体取决于您的需求和代码结构。

通常,如果这个数据结构是专门为一个类设计的、与该类紧密相关的,并且只在该类内部使用,那么将其定义为该类的内部数据类是合适的。这样可以将数据类与主类紧密关联,并且更好地表示它们之间的关系。

示例代码:

from dataclasses import dataclass


class MyClass:
    @dataclass
    class MyDataClass:
        value1: int
        value2: str

    def __init__(self):
        self.data = self.MyDataClass(42, 'Hello')

    def print_data(self):
        print(self.data)


my_object = MyClass()
my_object.print_data()

在上述示例中,我们在 MyClass 类内部定义了一个数据类 MyDataClass,并使用 dataclasses.dataclass 装饰器为其添加了数据类的特性。然后,在 MyClass 类的 __init__ 方法中创建了一个 MyDataClass 类的实例,并将其存储在 self.data 属性中。print_data 方法用于打印存储的数据。

如果数据结构不是特定于某个类的,或者在多个类中都需要使用,那么将其定义为独立的类外部数据类是合适的。

示例代码:

from dataclasses import dataclass


@dataclass
class MyDataClass:
    value1: int
    value2: str


class MyClass:
    def __init__(self):
        self.data = MyDataClass(42, 'Hello')

    def print_data(self):
        print(self.data)


my_object = MyClass()
my_object.print_data()

在上述示例中,我们将数据类 MyDataClass 定义为独立的类外部数据类,并在 MyClass 类中使用它。其他类也可以使用 MyDataClass 类,因为它是一个独立的数据结构。

无论您选择将数据类放在类内还是类外,都可以根据实际需求来确定最佳的组织方式。这取决于数据类与主类之间的关系和代码的整体结构。

Python dataclasses.dataclass 数据结构:类内定义 vs 类外定义

原文地址: https://www.cveoy.top/t/topic/jnt 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录