Как эволюционировать класс данных в Python? - PullRequest
2 голосов
/ 01 июня 2019

Мне интересно использовать класс данных, так как синтаксис короче, чем attr. Однако я не могу найти ярлык, который предоставляет API для его развития, например, используя. следующий код:

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

AB().evolve(b=3)

result = AB(a=1, b=3)

Легко ли найти замену из коробки? или реализовать это самостоятельно?

1 Ответ

3 голосов
/ 01 июня 2019

Функция 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)
...