Встречается на собеседованиях • сегодня
В чем разница между dataclass и namedtuple
Основные различия между dataclass и namedtuple в Python:
-
Изменяемость:
dataclassпо умолчанию изменяемый (можно менять атрибуты).namedtupleнеизменяемый (как кортеж).
-
Наследование:
dataclassподдерживает нормальное наследование.namedtupleсложно наследовать из-за особенностей реализации.
-
Доп. функциональность:
dataclassпозволяет легко добавлять методы, дефолтные значения, использовать__post_init__.namedtupleограничен в возможностях кастомизации.
-
Производительность:
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.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы