Назад к вопросам
Junior — Middle
61
Как использование атрибута __slots__ влияет на поведение и производительность классов в Python?
Ответ от нейросети
sobes.tech AI
Атрибут __slots__ в Python используется для ограничения набора атрибутов экземпляров класса и оптимизации использования памяти.
По умолчанию у каждого объекта есть словарь __dict__, где хранятся все атрибуты. Это гибко, но занимает память.
Если определить __slots__ в классе, Python создаст фиксированный набор атрибутов, и не будет создавать __dict__ для каждого экземпляра, что:
- Уменьшает потребление памяти, особенно при большом количестве объектов.
- Немного ускоряет доступ к атрибутам.
Однако с __slots__ нельзя динамически добавлять новые атрибуты, не указанные в списке.
Пример:
class Point:
__slots__ = ('x', 'y')
def __init__(self, x, y):
self.x = x
self.y = y
p = Point(1, 2)
p.x = 10 # работает
# p.z = 5 # вызовет ошибку AttributeError
Таким образом, __slots__ полезен для оптимизации, когда известен фиксированный набор атрибутов.