Middle
47
Une dataclass avec les attributs slots et frozen sera-t-elle immuable?
Entreprises à qui on a demandé
RadLab
Réponse de l'IA
sobes.tech IA
Да, 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 сочетает в себе преимущества неизменяемости и оптимизации по памяти.