除了内置的初始值设定项之外,DataClass是否有方法添加额外的初始化,而不重写它?具体地说,我想在初始化时判断作为数据类中的字段之一的整数列表的一些值.

推荐答案

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.

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

Python-3.x相关问答推荐

使用pybind11时,在sys.exit(0)处成功完成测试后,Python单元测试冻结

如何定义部署用 Python 编写的 Firestore 第二代函数的区域/位置?

Python根据条件从多行读取值

在REPLACE INTO中引用变量会抛出sqlite3.OperationalError

删除给定数组中所有元素为True的所有子数组

在字符串中查找正则表达式的所有模式

spinbutton调整up/down箭头

使用带有多线程的 win32com

命名元组内命名元组的 Python 语法

Python 3.5 中编码 utf-8 和 utf8 的区别

django rest框架中的save()、create()和update()有什么区别?

运行 PyCharm 测试时如何解决django.core.exceptions.ImproperlyConfigured:找不到 GDAL 库?

为什么 virtualenv 会有效地禁用 Python 3 制表符补全?

tensorflow 中 numpy.newaxis 的替代方案是什么?

Python heapify() 时间复杂度

创建集合的 Python 性能比较 - set() 与 {} 文字

try 在 Windows 10 高 DPI 显示器上解决模糊的 tkinter 文本 + zoom ,但担心我的方法不是 Pythonic 或不安全

Python 的 unittest 和 unittest2 模块有什么区别?

对字节进行按位运算

用于 unicode 大写单词的 Python 正则表达式