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

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

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

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


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

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

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

Автор урока

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

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

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

  1. Принципы Zen Python
  2. Разделение строк методом split()
  3. Декораторы в Python
  4. kwargs в Python
  5. Замер времени выполнения кода
  6. Замена атрибута в именованном кортеже
  7. Функции min(), max(), sum()
  8. Метод join() для объединения элементов строки
  9. Создание словаря и множества
  10. Удаление элемента по индексу
  11. Удаление ключа из словаря
  12. Работа с срезами в Numpy
  13. Повторение элементов в Python
  14. Добавление вложенных списков
  15. Управление сессиями в Python
  16. Объединение Python и Shell
  17. Создание списков в Python
  18. inspect в Python: анализ кода
  19. Оператор del в Python
  20. Отслеживание выполнения программы с библиотекой tqdm
  21. Импорт классов из другого файла
  22. Форматирование даты с strftime()
  23. Имена объектов в Python
  24. Логирование с Logzero
  25. Работа с датой и временем в Python
  26. Применение функций в Python
  27. Декоратор total_ordering для сравнения объектов
  28. Инверсия списка и строки
  29. Управление памятью в Python
  30. Обработка исключений в Python
  31. Управление доступом к модулю
  32. Удаление файлов с shutil.os.remove()
  33. Объединение словарей в Python
  34. Отрицательные индексы списков в Python
  35. Роль запятой в Python
  36. Подсчет элементов в списке с Counter
  37. Преобразование кортежа в словарь.
  38. Создание новых списков в Python
  39. Преобразование текста в нижний регистр
  40. Ускорение выполнения кода в Python
  41. Непрерывная проверка в Python
  42. Парсинг статей с Newspaper3k
  43. Извлечение новостей с помощью newspaper3k
  44. Метод join() для объединения элементов строки

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