В Python по умолчанию каждый экземпляр класса имеет внутренний словарь __dict__, в котором хранятся все его атрибуты. Это удобно, но занимает много памяти, особенно когда создаётся множество объектов.
Механизм __slots__ позволяет предварительно определить набор допустимых атрибутов для объектов и избежать создания __dict__, тем самым экономя память и повышая производительность.
class Person:
__slots__ = ['name', 'age']
def __init__(self, name, age):
self.name = name
self.age = age
p = Person("Alex", 30)
print(p.name)
Если вы попробуете добавить p.city = "Moscow" — получите AttributeError, потому что атрибут city не указан в __slots__.
Присоединяйтесь к нашим курсам для углубленного изучения области ИТ. Отправьте запрос для получения подробной информации!