Русский
Открыть в Telegram

Сообщение__slots__ - коли обʼєктів багато

25 сентября 2026
P
__slots__ - коли обʼєктів багато За замовчуванням кожен обʼєкт у пайтоні тримає свій __dict__, тобто словник з атрибутами. Це зручно бо можна додати будь-який атрибут на льоту, але словник займає памʼять. Коли обʼєктів кілька то це не є проблемою, а от коли їх багато, то вже стає помітно по пам'яті. __slots__ каже класу: атрибути тільки ці, словник не потрібен. class Receipt: __slots__ = ("id", "total", "paid") def __init__(self, id, total, paid): self.id = id self.total = total self.paid = paid Що це дає: - менше памʼяті на кожен обʼєкт (немає __dict__) - трохи швидший доступ до атрибутів Ціна - гнучкість. Новий атрибут вже не додаси: r = Receipt(1, 100, True) r.discount = 10 # AttributeError І ще пара нюансів: наслідування працює, але кожен клас у ланцюгу має свої __slots__, інакше __dict__ повернеться. З @dataclass теж дружить - просто @dataclass(slots=True). Коротко: якщо клас створюється багато разів і набір полів фіксований - __slots__ економить реальну памʼять. Для звичайних класів це зайве.
1 · 222 ·

Рядом в ленте

PPython Nation🐍🇺🇦True - це насправді 1 Багато хто не знає, але bool у пайтоні це підклас int. Тобто True дорівнює 1, а False дорівнює 0. Ними навіть можна рахувати: True + True
это сообщение
PPython чат для початківцівPython чат для початківців@pythonnewbie · группа · Технологии
48участников1пишущих за 30 дней
Лента площадки Открыть в Telegram

Открытая публичная лента из поискового индекса ChatCrawler — «Google по публичному Telegram»; обновляется по мере обхода площадки. Время — UTC.

Только публичный контент, официальный API Telegram. О проекте · Вопросы · Границы индекса · Убрать страницу из выдачи · Каталог · Поиск · Как мы считаем