Курс Python → Оптимизация памяти с __slots__

Использование атрибута __slots__ в Python может значительно сократить объем памяти, необходимый для каждого экземпляра класса. Вместо использования словаря для хранения атрибутов, Python создает небольшой массив фиксированного размера, что уменьшает накладные расходы на каждый объект. Это особенно полезно при работе с большим количеством экземпляров классов или при ограниченных ресурсах памяти.

Однако, использование атрибута __slots__ имеет свои ограничения. Например, при использовании __slots__ мы не можем динамически добавлять новые атрибуты к экземпляру класса. Все атрибуты должны быть объявлены заранее в списке __slots__. Это ограничение может быть преимуществом, так как предотвращает случайные опечатки при создании новых атрибутов, но может быть недостатком в некоторых случаях.

Кроме того, классы с атрибутом __slots__ не могут использовать множественное наследование. Это означает, что классы, использующие __slots__, могут наследоваться только от одного родительского класса. Для некоторых приложений это может быть ограничивающим фактором, поэтому необходимо внимательно оценить, подходит ли использование __slots__ для конкретного случая.

class MyClass:
    __slots__ = ['attribute1', 'attribute2']

    def __init__(self, value1, value2):
        self.attribute1 = value1
        self.attribute2 = value2

obj = MyClass(10, 20)
print(obj.attribute1, obj.attribute2)  # Вывод: 10 20

Пример выше демонстрирует использование атрибута __slots__ в классе MyClass. Здесь мы объявляем список атрибутов, которые будут доступны для каждого экземпляра класса. При создании экземпляра MyClass мы можем установить значения этих атрибутов и обращаться к ним как к обычным атрибутам объекта.

Твои коллеги будут рады, поделись в

Автор урока

Дмитрий Комаровский
Дмитрий Комаровский

Автоматизация процессов
в КраснодарБанки.ру

Другие уроки курса "Python"

  1. Преобразование регистра строк
  2. Библиотека sh: использование команд bash в Python
  3. Создание виртуальной среды
  4. Распаковка значений в Python
  5. Извлечение данных из JSON
  6. Объединение, распаковка и деструктуризация
  7. Открытие и запись файлов
  8. Метод rpow в Python
  9. Форматирование строк в Python.
  10. Создание новых списков
  11. ChainMap избыточные ключи
  12. Итерации в Python
  13. Получение локальных переменных в Python
  14. Особенности запятых в Python
  15. Lambda Functions in Python
  16. Метод __imod__ для Python
  17. Генераторные выражения и islice.
  18. Подписка на SelectelNews в Twitter
  19. Автоматизация скриптов на AWS Lightsail.
  20. Методы __repr__ и __str__ в Python
  21. Работа с IP-адресами в Python
  22. Контекстный менеджер в Python
  23. Функция reduce() в Python
  24. Преобразование документов в PDF с помощью Spire.Office
  25. Оператор «or» в Python
  26. Удаление символа из строки
  27. Встраивание HTML в Jupyter Notebook
  28. Срез в Python
  29. Упрощение работы с JSON-данными в Python
  30. Разработка Telegram-ботов
  31. CLI-инструмент howdoi
  32. Метод split() для разделения строк
  33. Управление импортом в Python
  34. Роль запятой в Python
  35. Работа с модулем random
  36. Создание вкладок с TKinter
  37. Создание списка дат
  38. Документирование функций в Python
  39. Удаление ключа из словаря
  40. Работа с контекст-менеджером «with»
  41. Метод Event.wait() в Python
  42. Слияние словарей в Python 3.9
  43. Установка и использование howdoi
  44. Просмотр файла в Jupyter Noteboo
  45. Вставка переменных в шаблоны Flask
  46. Виртуальные среды в Python
  47. Работа со строками в Python.

Marketello читают маркетологи из крутых компаний