Курс 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. Работа с файловой системой в Python
  2. Локальные переменные.
  3. Метод __float__ в Python
  4. Переворот списка в Python
  5. GitHub в Telegram: подписка на уведомления
  6. Переворот строки с использованием цикла
  7. Сортировка в Python
  8. Автоматизация скриптов на AWS Lightsail.
  9. Аннотации типов в Python
  10. Бесконечные списки в Python
  11. Создание именованных кортежей в Python
  12. Приоритет операций в Python
  13. Подсказки типов в Python
  14. Объединение словарей в Python
  15. Отладка кода
  16. Частичное совпадение ввода
  17. Сравнение строк в Python
  18. Символ подчеркивания в Python
  19. Динамические маршруты во Flask
  20. Сглаживание списка
  21. Удаление пробелов методом translate()
  22. Проверка кортежей.
  23. Фильтрация данных в Python.
  24. Профилирование кода на Python
  25. %pinfo: получение информации об объекте
  26. Обработка ошибок в Python
  27. Объединение Python и Shell
  28. Группы исключений в Python
  29. Запуск файлового сервера
  30. Создание класса очереди
  31. Управление памятью в Python
  32. Удаление дубликатов из списка с помощью dict.fromkeys
  33. Python Метод del.
  34. F-строки в Python
  35. UserList в Python: Описание и примеры использования
  36. Открытие и запись файлов
  37. Фильтрация списков с itertools
  38. Освоение Python
  39. split() — разделение строки
  40. Ноутбуки AMD Ryzen ™ 4000: мощность и эффективность
  41. Подсчет элементов в Python
  42. Хеши в Python
  43. Создание таблиц в терминале с PrettyTable
  44. Синхронизация потоков с time.sleep()
  45. Лямбда-функции в Python
  46. Передача параметров в Python
  47. Функциональное программирование в Python
  48. Модуль Operator в Python

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