Sobes.tech
Back to questions
Junior — Middle
50

Объясните концепцию слотов в Python и для чего они используются

Answer from AI

sobes.tech AI

В Python __slots__ — это механизм, позволяющий ограничить набор атрибутов, которые могут быть у экземпляров класса, и тем самым экономить память.

По умолчанию экземпляры класса хранят свои атрибуты в словаре __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  # вызовет AttributeError, так как 'z' не в __slots__

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