Python 3.7+dataclassesфункция
dataclasses.astuple
конвертация
Рекурсивно превращает экземпляр dataclass в кортеж значений полей.
Синтаксис
dataclasses.astuple(obj, *, tuple_factory=tuple)
Кортеж теряет имена, поэтому код, который его распаковывает, ломается молча, стоит переставить или добавить поле в классе — для сериализации и хранения надёжнее asdict. Как и asdict, функция рекурсивная и копирует значения через deepcopy, так что вложенный датакласс станет вложенным кортежем, а не ссылкой на исходный объект. Уместно там, где нужен именно короткий позиционный набор: распаковка, ключ сортировки, передача в функцию через *.
Примеры
import dataclasses
@dataclasses.dataclass
class P:
x: int
y: int
print(dataclasses.astuple(P(1, 2))) # → (1, 2)
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности