Курс 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. Комментарии в Python
  3. Пространство имен в Python
  4. Работа со слайсами
  5. Метод __index__ в Python
  6. Анонимные функции в Python
  7. Создание namedtuple списком полей
  8. Объединение словарей в Python
  9. Переворот последовательности
  10. Обновление множества в Python
  11. Установка и использование Python-dateutil
  12. Параллельные вычисления в Python
  13. Преобразование символов с помощью map
  14. Мониторинг памяти с Pympler
  15. Метод join для наборов
  16. Множественное назначение в Python
  17. Глобальные переменные в Python
  18. Работа со словарями Python
  19. Генерация UUID в Python
  20. Генераторы в Python
  21. Реверс строки в Python
  22. Работа с CSV в Python
  23. Профилирование данных с Pandas.
  24. Основы Python
  25. Многопоточность в Python
  26. Использование метода lower()
  27. Добавление кнопки в tkinter
  28. Ускоренный импорт библиотек
  29. Объединение множеств в Python
  30. Обработка исключений в Python
  31. Удаление дубликатов из списка
  32. Объединение списков в Python
  33. Оператор == в Python
  34. Особенности запятых в Python
  35. Возврат нескольких значений из функции
  36. Асинхронный код в Python
  37. Работа с OpenCV
  38. Регистрация на хакатоне
  39. Python enumerate() использование
  40. Заказ карты Тинькофф Black
  41. Логический оператор «and» в Python
  42. Метод count() для списков
  43. Применение функции к списку
  44. Работа с collections в Python
  45. Генератор чисел Фибоначчи
  46. Логирование с Logzero
  47. Принципы SRP и OCP

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