除了内置的初始化程序所提供的内容外,数据类是否有办法添加其他初始化而不覆盖它?具体来说,我想检查整数列表的某些值,该值是初始化时数据类中的字段之一。
编辑:
事后看来,这不是最大的问题。但是,我不得不问这个问题的原因是我已经习惯了在google上找到答案,而在谷歌搜索这个问题时,没有可用的答案,通常最好的答案来自堆栈溢出,通常以搜索结果最高结果。因此,我将回答这个问题,以防它可能帮助其他不熟悉数据类的人学习使用它们。
Yun*_*Gun 11
如数据类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}")
Run Code Online (Sandbox Code Playgroud)
定义该数据类,然后运行以下命令:
dc = DataClass(1) # Prints "My field is 1"
Run Code Online (Sandbox Code Playgroud)
将初始化some_field
为1,然后运行__post_init__
,打印My field is 1
。
这使您可以在初始化方法之后运行代码,以执行您可能要执行的任何其他设置/检查。
归档时间: |
|
查看次数: |
1301 次 |
最近记录: |