Sobes.tech
Back to questions
Junior — Middle
60

Какое преимущество использования __slots__ в Python по сравнению с традиционными способами хранения атрибутов?

Companies where asked
ИнфоТехСервис

Answer from AI

sobes.tech AI

Использование __slots__ в Python позволяет явно указать фиксированный набор атрибутов для экземпляров класса, что даёт несколько преимуществ по сравнению с традиционным хранением атрибутов в словаре __dict__:

  • Экономия памяти: Экземпляры с __slots__ не создают словарь для атрибутов, а используют более компактное внутреннее представление, что уменьшает потребление памяти, особенно при большом количестве объектов.
  • Ускорение доступа: Доступ к атрибутам может быть быстрее, так как отсутствует необходимость поиска в словаре.

Пример:

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

Однако с __slots__ нельзя динамически добавлять новые атрибуты, не указанные в списке, что ограничивает гибкость, но повышает производительность и экономит память.