Встречается на собеседованиях • сегодня

В чем разница между dataclass и namedtuple

Основные различия между dataclass и namedtuple в Python:

  1. Изменяемость:

    • dataclass по умолчанию изменяемый (можно менять атрибуты).
    • namedtuple неизменяемый (как кортеж).
  2. Наследование:

    • dataclass поддерживает нормальное наследование.
    • namedtuple сложно наследовать из-за особенностей реализации.
  1. Доп. функциональность:

    • dataclass позволяет легко добавлять методы, дефолтные значения, использовать __post_init__.
    • namedtuple ограничен в возможностях кастомизации.
  2. Производительность:

    • namedtuple легковеснее и быстрее, так как основан на кортежах.

Пример:

python
from dataclasses import dataclass
from collections import namedtuple

# dataclass
@dataclass
class PointDC:
    x: int
    y: int

# namedtuple
PointNT = namedtuple('PointNT', ['x', 'y'])

p_dc = PointDC(1, 2)
p_dc.x = 3  # OK

p_nt = PointNT(1, 2)
p_nt.x = 3  # Ошибка: нельзя изменить

Выбор зависит от задачи: если нужна скорость и неизменяемость — namedtuple, если гибкость — dataclass.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы