Назад к вопросам
Junior — Middle
69
Объясните назначение и принцип работы атрибута __slots__ в Python.
Ответ от нейросети
sobes.tech AI
Атрибут __slots__ в Python используется для ограничения набора атрибутов, которые могут быть у экземпляров класса. Это позволяет:
- Экономить память, так как не создаётся словарь
__dict__для каждого объекта. - Немного ускорить доступ к атрибутам.
Принцип работы:
При объявлении __slots__ в классе вы указываете фиксированный набор имен атрибутов. Python создаёт для них специальное внутреннее хранилище, вместо обычного словаря.
Пример:
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 # Ошибка: нельзя добавить атрибут, не указанный в __slots__
Ограничения:
- Нельзя динамически добавлять новые атрибуты, не указанные в
__slots__. - Не подходит, если нужен гибкий набор атрибутов.
- Не совместим с некоторыми механизмами наследования, если не учитывать
__slots__в подклассах.
Используется для оптимизации в случаях, когда создаётся много объектов с фиксированным набором атрибутов.