除了内置的初始化程序所提供的功能之外,数据类是否可以添加其他初始化操作而不覆盖它?具体来说,我想检查整数列表的某些值,这些值是初始化时数据类中的字段之一。
编辑:
事后看来,这不是最大的问题。但是,我不得不问这个问题的原因是我已经习惯了在google上找到答案,而在谷歌搜索这个问题时,没有可用的答案,通常最好的答案来自堆栈溢出,通常以搜索结果最高结果。因此,我将回答这个问题,以防它可能帮助其他不熟悉数据类的人学习使用它们。
答案 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
。
这允许您在初始化方法之后运行代码,以执行您可能要执行的任何其他设置/检查。