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

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

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

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


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

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

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

Автор урока

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

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

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

  1. Создание функций высшего порядка
  2. Деление в Python
  3. Многострочные комментарии в Python
  4. Аргументы *args и **kwargs
  5. Метод __imod__ для Python
  6. Конвертация текстовых чисел с помощью Numerizer
  7. Частичное совпадение пользовательского ввода в Python 3.10
  8. Метод rlshift для битового сдвига
  9. Форматирование чисел в Python
  10. Основы Python
  11. Поток данных в Python
  12. Операции с комплексными числами
  13. Проблемы с именами переменных
  14. Тестирование времени с Freezegun
  15. Названия столбцов в Python таблицах
  16. Управление User-Agent в Python
  17. Списковое включение в Python
  18. Проверка условий: all и any
  19. Python UserString — создание подклассов строк
  20. Приоритет операций в Python
  21. Символ подчеркивания в Python
  22. Создание панели меню Tkinter
  23. Особенности запятых в Python
  24. Курсы Яндекс Практикум
  25. Срезы в Numpy
  26. Форматирование данных с pprint
  27. Реверс строки и списка в Python.
  28. Создание новой даты в Python
  29. Переворот списка в Python
  30. Цикл for в Python
  31. Именованные кортежи в Python
  32. Concrete Paths — метод .with_suffix()
  33. Обработка исключений в Python
  34. Регулярные выражения: метод match
  35. Подписка на @SelectelNews
  36. Работа с модулем bisect
  37. Сортировка в Python
  38. Подсчет элементов в Python
  39. Обновление данных через PUT запрос
  40. Python Enumerate
  41. Работа со слайсами
  42. Изменение регистра данных

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