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

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

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

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


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

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

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

Автор урока

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

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

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

  1. Чтение и запись TOML-конфигов
  2. Метод __index__ в Python
  3. Генераторы в Python
  4. Наследование в программировании
  5. Принципы Zen of Python
  6. Конкатенация строковых литералов
  7. Метод get для словаря
  8. Построение графиков в Matplotlib
  9. Извлечение новостей с помощью newspaper3k
  10. Удаление элементов из списка в Python
  11. Изменение регистра данных
  12. Методы __repr__ и __str__ в Python
  13. Активация Matplotlib в Jupyter
  14. Нахождение максимального значения и его индекса в списке
  15. Сокращение ссылок с pyshorteners
  16. Объединение словарей в Python
  17. Декораторы в Python
  18. Цикл for в Python
  19. Список и кортеж в Python
  20. Асинхронное выполнение задач в Python
  21. Именованные срезы в Python
  22. f-строки в формате строк
  23. Инициализация структур данных
  24. Форматирование строк в Python
  25. Изменение списка срезами
  26. Генерация случайных чисел в Python
  27. Ускорение выполнения кода в Python
  28. Измерение времени выполнения кода
  29. Работа с географическими данными.
  30. Список переменных с %who
  31. Извлечение данных из JSON
  32. Оптимизация гиперпараметров с Scikit Optimize
  33. Основы Python
  34. Работа с библиотекой requests
  35. Работа с collections в Python.
  36. Метод rsub в Python: расширение функциональности вычитания
  37. Работа со слайсами
  38. Вычисление фазы комплексного числа
  39. SciPy: широкий функционал для математических операций
  40. Использование функции enumerate()
  41. Удаление ключей из словаря
  42. Транспонирование 2D-массива с помощью zip
  43. Работа с collections.Counter
  44. Работа с timedelta в Python
  45. Оболочка Python
  46. Генератор чисел Фибоначчи
  47. Метод join() для объединения элементов строки

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