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

Атрибут slots в Python позволяет явно объявлять элементы данных (например, свойства) и запрещать создание словаря dict и weakref (если явно не объявлено в slots или не доступно в родительском элементе). Наличие магического атрибута slots делает несколько вещей. Во-первых, он ограничивает допустимый набор имен атрибутов объекта только перечисленными именами. Во-вторых, поскольку атрибуты теперь фиксированы, больше нет необходимости хранить атрибуты в словаре экземпляра, поэтому атрибут dict удаляется (если только базовый класс уже не имеет его; он также может быть добавлен обратно подклассом, который не имеет slots).

При использовании атрибута slots атрибуты хранятся в заранее определенных местах в массиве. Это позволяет экономить память и ускоряет доступ к атрибутам объекта. Кроме того, использование slots может помочь избежать опечаток в именах атрибутов, так как только объявленные имена будут доступны.

Для объявления атрибута slots в классе необходимо просто добавить атрибут slots со списком имен атрибутов, которые должны быть доступны. Например:


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

В данном примере класс MyClass имеет только два атрибута, attribute1 и attribute2, которые будут доступны для объектов этого класса. При попытке обратиться к другим атрибутам будет вызвано исключение.

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

Автор урока

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

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

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

  1. Вакансии в Nebius
  2. Создание файла с проверкой ошибки
  3. Работа с часовыми поясами в Python.
  4. Кортеж в Python: создание, доступ, изменение
  5. Класс UserDict: дополнительная функциональность
  6. Ключевое слово global в Python
  7. Условные выражения в Python
  8. Работа с Colorama
  9. Переменная Шредингера
  10. Удаление знаков препинания в Python
  11. Форматирование строк в Python
  12. Метод index() в Python
  13. Функция zip() в Python
  14. Частичное совпадение ввода
  15. Выражения-генераторы в Python
  16. Функция map() и ленивая оценка
  17. Принципы Zen Python
  18. Работа с областями видимости переменных
  19. Явный импорт в Python
  20. Работа с путями в Python
  21. Цикл for в Python
  22. Создание класса в Python
  23. CSV строка разделение в Python
  24. Преобразование букв в нижний регистр
  25. Сортировка слиянием
  26. Модуль xkcd: добавление юмора в Python
  27. Функция product() в Python
  28. Работа с модулем glob в Python
  29. Резервирование символов в Python
  30. OrderedDict — упорядоченный словарь
  31. Печать комбинаций в Python с Itertools
  32. Структурирование именованных констант
  33. Хранение переменных в Python.
  34. Извлечение новостей с newspaper3k
  35. Создание итератора
  36. Метод split() в Python
  37. Преобразование вложенного списка
  38. Атрибуты класса и экземпляра
  39. Лямбда-функции в Python
  40. Работа с модулем random
  41. Оператор * в Python
  42. Закрытие файла в Python

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