Когда мы объявляем класс и добавляем атрибуты в slots, Python не создает для этого класса обычный словарь. Вместо этого он использует фиксированное количество слотов для хранения атрибутов.
При создании экземпляра класса Python не создает для объекта словарь атрибутов, а использует структуру с фиксированными слотами:
class Point:
slots = ['x', 'y'] # Только два атрибута: x и y
def __init__(self, x, y):
self.x = x
self.y = y
# Создаем объект
p = Point(3, 4)
# Доступ к атрибутам
print(p.x) # 3
print(p.y) # 4
# p.z = 5 # AttributeError: 'Point' object has no attribute 'z'
Попытка присвоить атрибут z, которого нет в slots, вызовет ошибку, поскольку его нет в "разрешенных" атрибутах класса.
>>Click here to continue<<