__slots__ — это специальный атрибут класса, который определяет разрешённые имена локальных свойств экземпляров.🔧 Пример использования:
class Point:
__slots__ = ('x', 'y') # Разрешаем ТОЛЬКО 'x' и 'y'
def __init__(self, x, y):
self.x = x # ✅ Можно
self.y = y # ✅ Можно
p = Point(1, 2)
p.z = 3 # ❌ Ошибка! Только 'x' и 'y'
⚠️ Важный момент:
# При slots у объектов нет dict
print(p.__dict__) # ❌ AttributeError!
💪 3 главных преимущества:
1️⃣ 🔒 Ограничение свойств
• Можно создавать ТОЛЬКО атрибуты из slots
• Защита от опечаток и случайных атрибутов
2️⃣ 💾 Экономия памяти
• У объектов не создается `__dict__` (обычный словарь атрибутов)
• Атрибуты хранятся более эффективно
• Экономия 20-50% памяти на каждый объект
3️⃣ ⚡️ Ускорение работы
• Быстрее читать/писать разрешённые атрибуты
• Прямой доступ вместо поиска в словаре
🎯 Идеально для:
• Фиксированных структур данных
• Массового создания объектов
• Оптимизации памяти в сервисах
