Sobes.tech
Back to questions
Junior — Middle
77

Какова цель использования __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__ полезен для оптимизации памяти и предотвращения случайного добавления новых атрибутов.