Курс 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. Работа со случайными элементами
  3. Декораторы в Python
  4. Философия Python
  5. Объединение словарей в Python 3.5+
  6. Открытие и редактирование скриптов Python
  7. Генераторы в Python
  8. 9 уловок для чистого кода
  9. Избегайте изменяемых аргументов
  10. Транспонирование матрицы в Python
  11. Логирование с Loguru
  12. Создание новой даты в Python
  13. Разделение строк в Python
  14. Отладка в Python
  15. Потоковый ввод в Python
  16. Работа со словарями Python
  17. Форматирование заголовков в Python
  18. Документирование функций в Python
  19. Декораторы классов
  20. Поиск частых элементов в списке
  21. Функция sleep() в Python
  22. Работа с кортежами в Python
  23. Numpy: разбиение массивов
  24. Многострочные комментарии в Python
  25. Карта бомбоубежищ в Москве и Питере
  26. Сложные типы данных в Python
  27. Проверка дубликатов в Python
  28. Взаимодействие с внешними процессами в Python
  29. Зарезервированные слова в Python
  30. Работа с WindowsPath()
  31. Пространство имен в Python
  32. Копирование объектов в Python
  33. Метод split() для разделения строк
  34. Отладка утечек памяти в Python
  35. Передача параметров в Python
  36. Генерация ключей RSA
  37. Анонимные функции в Python
  38. Построение графиков в терминале с bashplotlib
  39. Сортировка HTML по CSS-селектору
  40. Применение функции к списку
  41. Установка пакетов с помощью pip
  42. Метод __index__ в Python
  43. Оператор (*) в Python
  44. Измерение времени выполнения кода
  45. Оформление текста в консоли с TermColor
  46. Регистрация на курсы SF Education

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