TGViewer
Библиотека питониста | Python, Django, Flask Библиотека питониста | Python, Django, Flask @pyproglib · 37.2K subscribers
Post #7304 3.6K
🔛 Как Python хранит атрибуты класса и зачем нужны `__slots__`

По умолчанию каждый объект в Python хранит свои атрибуты в словаре __dict__.
Это удобно — но не всегда эффективно.
p = Point(1, 2, 3)
p.__dict__
# {'x': 1, 'y': 2, 'z': 3}


Любой новый атрибут добавляется прямо в этот словарь:
p.w = 4


Но что если вам нужно экономить память или ускорить доступ к атрибутам?

🌠 Используем __slots__

Добавим в класс:
class Point:
__slots__ = ('x', 'y', 'z')


Теперь:
✔️ можно создавать только перечисленные атрибуты
❌ нельзя добавлять новые (p.w = 4 → AttributeError)
❌ у объекта нет __dict__
✔️ память тратится значительно меньше
✔️ доступ к атрибутам быстрее

Используйте __slots__, если:
• создаёте тысячи или миллионы объектов
• у вас tight loops с частыми обращениями к атрибутам
• важно уменьшить память (например, при обработке больших файлов)

Во всех остальных случаях проще оставить обычный __dict__.

🐸 Библиотека питониста

#буст
  • 👍 9
  • ❤ 7
  • 🔥 1
More from @pyproglib
  1. Oct 7, 2026🎓 С Днём учителя! Учиться никогда не поздно — особенно когда технологии меняются быстрее,…
  2. Oct 3, 2026📚Напоминаем про наш полный курс «Самоучитель по Python для начинающих» Мы написали и собр…
  3. Oct 2, 2026🎹 Что делать после ChatGPT? Следующий шаг — AI-агенты. Они не просто отвечают на запросы,…
  4. Sep 30, 2026🔥 Последний день для разработчиков AI уже пишет код. Теперь важнее научиться встраивать е…
  5. Sep 25, 2026🔥 Курс «ИИ для разработчиков» уже стартовал И мы решили открыть первое занятие всем — мож…
  6. Sep 20, 2026👻 94% токенов уходят не на код Анализ запусков показал: основная часть токенов уходит на…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →