如何在python中进化数据类?

tri*_*oid 4 python python-dataclasses

我对使用 dataclass 很感兴趣,因为它的语法比 attr 短。但是,我找不到提供 API 来改进它的快捷方式,例如使用以下代码:

@dataclass
class AB(object):
    a: int = 1
    b: int = 2

AB().evolve(b=3)

result = AB(a=1, b=3)
Run Code Online (Sandbox Code Playgroud)

是否容易找到开箱即用的替代品?还是自己实施?

Xuk*_*rao 7

该dataclasses.replace()功能是大致相当于attr.evolve()功能。

基于您的代码的使用示例:

import dataclasses
from dataclasses import dataclass

@dataclass
class AB(object):
    a: int = 1
    b: int = 2


ab_object = AB()
another_ab_object = dataclasses.replace(ab_object, b=3)

print(ab_object)
# Output: AB(a=1, b=2)
print(another_ab_object)
# Output: AB(a=1, b=3)
Run Code Online (Sandbox Code Playgroud)