Python 3数据类初始化

时间:2018-07-05 20:01:49

标签: python python-3.x

除了内置的初始化程序所提供的功能之外,数据类是否可以添加其他初始化操作而不覆盖它?具体来说,我想检查整数列表的某些值,这些值是初始化时数据类中的字段之一。

编辑:

事后看来,这不是最大的问题。但是,我不得不问这个问题的原因是我已经习惯了在google上找到答案,而在谷歌搜索这个问题时,没有可用的答案,通常最好的答案来自堆栈溢出,通常以搜索结果最高结果。因此,我将回答这个问题,以防它可能帮助其他不熟悉数据类的人学习使用它们。

1 个答案:

答案 0 :(得分:3)

dataclass PEP中所述,有一个__post_init__方法,这将是__init__调用的最后一个方法。

from dataclasses import dataclass

@dataclass
class DataClass: 
    some_field: int

    def __post_init__(self):
        print(f"My field is {self.some_field}")

定义此数据类类,然后运行以下命令:

dc = DataClass(1) # Prints "My field is 1"

some_field初始化为1,然后运行__post_init__,打印My field is 1

这允许您在初始化方法之后运行代码,以执行您可能要执行的任何其他设置/检查。