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