Оптимизация по памяти: `__slots__`
Python
Senior
Яндекс
Что делает `__slots__` в классе Python? В каких случаях его стоит использовать, а в каких — нет?
Ответы
__slots__
`__slots__` запрещает создание `__dict__` у экземпляров и фиксирует набор атрибутов. Это уменьшает потребление памяти и ускоряет доступ к атрибутам для большого числа объектов.
Пример:
```python
class Point:
__slots__ = ('x', 'y')
def __init__(self, x, y):
self.x = x
self.y = y
```
Минусы:
- нельзя динамически добавлять новые атрибуты;
- нужно аккуратно учитывать наследование;
- не всегда выигрыш заметен.
Использовать `__slots__` имеет смысл для миллионов мелких объектов в performance-критичных местах.