Back to questions
Junior — Middle
78
Какова цель использования __slots__ в Python и чем оно отличается от обычных атрибутов классов?
Answer from AI
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)
p.x = 10 # работает
# p.z = 3 # вызовет AttributeError, так как 'z' не в __slots__
Таким образом, __slots__ полезен для оптимизации памяти и предотвращения случайного добавления новых атрибутов.