Курс 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. Метод gt в Python
  2. Улучшенные подсказки для импорта в Python 3.12
  3. Progress с библиотекой tqdm
  4. Работа с исключениями в Python
  5. Списковые включения в Python
  6. Управление виртуальными окружениями в Python
  7. Извлечение аудио из видео
  8. Отслеживание выполнения программы с библиотекой tqdm
  9. Добавление Progressbar в Python
  10. Фильтрация списков с itertools
  11. Перетасовка списков в Python
  12. Получение размера объекта с sys.getsizeof()
  13. Оценка точности модели
  14. Комментарии в Python
  15. Проверка наличия элемента в списке
  16. Списки в Python
  17. Эффективная конкатенация строк в Python
  18. Проверка строки на палиндром
  19. Логирование в Python
  20. Изменение списка срезом
  21. Удаление знаков препинания в Python
  22. Декоратор Property в Python
  23. Генерация QR-кодов с библиотекой qrcode
  24. Работа с часовыми поясами в Python.
  25. Замена символов в строке
  26. Установка и использование pyshorteners
  27. Обновление и получение данных в SQLite
  28. Метод splitlines() для разделения строк
  29. Исправление ошибки NameError
  30. Хеширование паролей с использованием salt
  31. Создание даты из строки ISO
  32. Ключевое слово global в Python
  33. Отладка производительности Python
  34. Роль запятой в Python
  35. Создание генераторов
  36. Объявление переменных в Python
  37. Базовые объекты Python
  38. Defaultdict в Python
  39. Управление асинхронными задачами на Python.
  40. Подсчет частоты элементов с Counter
  41. Операции с массивами в NumPy
  42. Генераторы в Python
  43. Работа с набором данных CIFAR10 в PyTorch

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