Курс 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. Pretty-printing JSON в Python
  2. Генератор списка с условием if
  3. Создание словаря с значением по умолчанию
  4. Основы Python
  5. Обновление ключей в Python
  6. Библиотека Rich: форматирование текста
  7. Удаление ключей из словаря
  8. Роль object и type в Python
  9. Очистка входных данных
  10. Операторы объединения в Python 3.9
  11. Создание Radio кнопок в tkinter
  12. Модуль Antigravity в Python 3
  13. Python Translator: создание локальных переводчиков
  14. Генераторы и сеты в Python
  15. Установка и использование emoji
  16. Метод rpow в Python
  17. Отправка поздравлений по дню рождения
  18. Возврат значений из генератора
  19. Работа с Path в Python
  20. Структурирование данных с Pydantic
  21. Показ всплывающих окон Tkinter
  22. Декораторы в Python
  23. Декоратор total_ordering для класса Point
  24. Конкатенация строк с join() в Python
  25. Создание словарей и множеств в Python.
  26. Создание треугольника Паскаля
  27. Функции в Python: создание и вызов
  28. Изменение IP-адреса в Python
  29. Оператор деления для класса Rational
  30. Библиотека itertools: объединение списков
  31. Нан-рефлексивность в Python
  32. Преобразование данных в Python
  33. Освобождение памяти в Python
  34. Взаимодействие с внешними процессами в Python
  35. Добавление Progressbar в Python
  36. Ноутбуки AMD Ryzen ™ 4000: мощность и эффективность
  37. Создание и обучение модели с Keras
  38. Форматирование строк в Python
  39. Названия столбцов в Python таблицах
  40. Структура данных словарь в Python
  41. Преобразование чисел в восьмеричную строку
  42. Оптимизация памяти с slots
  43. Асинхронное выполнение задач в Python
  44. Работа со строками в Python
  45. Преобразование строки в число
  46. Метод enumerate() в Python
  47. Настройка Cron

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