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

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

Оба предоставляют удобный способ создания классов для хранения данных с автоматической генерацией boilerplate-кода.

Сходства:

  1. Автоматическая генерация методов: __init__, __repr__, __eq__
  2. Иммутабельность: namedtuple по умолчанию неизменяем, dataclass можно сделать неизменяемым через @dataclass(frozen=True)
  3. Доступ по имени атрибутов: obj.field

Пример:

python
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 легковеснее и быстрее, но менее функционален.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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