Будет ли неизменяемым dataclass с атрибутами slots и frozen?

Да, dataclass с параметрами slots=True и frozen=True будет неизменяемым и более эффективным по памяти.

Короткий ответ

Что ответить на собеседовании

Да, dataclass с параметрами slots=True и frozen=True будет неизменяемым и более эффективным по памяти.

Подробный разбор

Ответ с пояснениями

Да, dataclass с параметрами slots=True и frozen=True будет неизменяемым и более эффективным по памяти.

  • frozen=True делает экземпляры класса иммутабельными: после создания нельзя изменить значения атрибутов — попытка присвоения вызовет ошибку.
  • slots=True исключает создание словаря __dict__ для каждого экземпляра, что экономит память и ускоряет доступ к атрибутам.

Пример:

from dataclasses import dataclass

@dataclass(slots=True, frozen=True)
class Point:
    x: int
    y: int

p = Point(1, 2)
print(p.x)  # 1
p.x = 3     # Ошибка: cannot assign to field 'x'

Таким образом, такой dataclass сочетает в себе преимущества неизменяемости и оптимизации по памяти.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее