Back to questions
Middle+
6
Что такое __slots__ в Python?
Companies where asked
Литрес
Answer from AI
sobes.tech AI
__slots__ в Python — это механизм, который позволяет ограничить набор атрибутов, которые могут быть у экземпляров класса, и тем самым сэкономить память.
По умолчанию у каждого объекта есть словарь __dict__, где хранятся все атрибуты. Это удобно, но занимает дополнительную память. Если объявить __slots__ в классе, Python не создаёт __dict__ для экземпляров, а выделяет фиксированный набор атрибутов.
Пример:
class Point:
__slots__ = ('x', 'y')
def __init__(self, x, y):
self.x = x
self.y = y
p = Point(1, 2)
print(p.x, p.y) # 1 2
# p.z = 3 # вызовет AttributeError, так как 'z' не в __slots__
Использование __slots__ полезно, когда создаётся много объектов одного класса и важна оптимизация памяти. Однако это ограничивает динамическое добавление новых атрибутов.