В чем сходства между dataclass и namedtuple

Python Middle Без компании
В чем сходства между dataclass и namedtuple
Ответы
Оба предоставляют удобный способ создания классов для хранения данных с автоматической генерацией boilerplate-кода. **Сходства:** - **Автоматическая генерация методов**: `__init__`, `__repr__`, `__eq__` - **Иммутабельность**: `namedtuple` по умолчанию неизменяем, `dataclass` можно сделать неизменяемым через `@dataclass(frozen=True)` - **Доступ по имени атрибутов**: `obj.field` **Пример:** ``` from collections import namedtuple from dataclasses import dataclass # namedtuple PointNT = namedtuple('PointNT', ['x', 'y']) # dataclass @dataclass class PointDC: x: int y: int p_nt = PointNT(1, 2) p_dc = PointDC(1, 2) print(p_nt, p_dc) # PointNT(x=1, y=2) PointDC(x=1, y=2) ``` **Различия:** - `dataclass` гибче (поддержка дефолтных значений, наследование, mutable/immutable) - `namedtuple` легковеснее и быстрее, но менее функционален.