Python предлагает три основных способа определения структур данных, каждый подходит для разных случаев использования.
Dataclasses — это современный стандарт для изменяемых контейнеров данных. Они автоматически генерируют методы __init__, __repr__ и __eq__, значительно сокращая количество шаблонного кода.
Ключевые особенности:
field() для сложных начальных значенийfrozen=True, чтобы сделать экземпляры неизменяемымиslots=True (Python 3.10+) для улучшенного потребления памяти@dataclass
class Point:
x: float
y: float = 0.0
NamedTuples — это лёгкие, неизменяемые структуры, которые ведут себя как кортежи, но позволяют обращаться к полям по именам. Они идеальны, когда нужно поведение кортежа с понятными именами атрибутов.
Ключевые особенности:
class Point(NamedTuple):
x: float
y: float = 0.0
Обычные классы дают полный контроль над поведением и лучше всего подходят для сложных предметных областей.
Используй их, когда нужны:
__init__ или валидацияDataclasses с frozen=True и NamedTuples оба неизменяемы, но NamedTuples имеют меньше затрат памяти и поддерживают индексацию и распаковку кортежей.
Новый — ещё не проверен сообществом
Вы