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

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

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

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


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

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

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

Автор урока

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

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

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

  1. Получение ID текущего процесса
  2. Округление в Python
  3. Принцип одной функции
  4. Управление фоновыми задачами в Python
  5. Управление сессиями в Python
  6. Преобразование объекта в строку
  7. Кортежи в Python: особенности и преимущества
  8. Создание функций с произвольным количеством аргументов
  9. Создание треугольника Паскаля
  10. Освобождение памяти в Python
  11. Метод __getitem__ в Python
  12. Поиск наиболее частого элемента в списке
  13. Подсчет часто встречающихся элементов
  14. Модуль itertools: комбинации и перестановки
  15. Множества и frozenset
  16. Списковое включение в Python
  17. Работа с timedelta в Python
  18. Работа с JSON данными в Python
  19. Вложенные циклы в Python
  20. Проекты на Python
  21. Декораторы в Python
  22. Генераторы списков
  23. Форматирование кода на Python
  24. Отладчик pdb: начало работы
  25. Импорт с альтернативным именем
  26. Операторы сравнения в Python
  27. Красивый вывод списка
  28. Функция count() в Python
  29. Обработка ошибки IndexError
  30. Howdoi — получение ответов из терминала
  31. Область видимости переменных
  32. Названия переменных
  33. Удаление дубликатов из списка
  34. Группы исключений в Python
  35. Управление асинхронными задачами на Python.
  36. Разделение строки с регулярными выражениями
  37. Генераторы в Python
  38. Область видимости переменных
  39. Работа с необработанными строками
  40. Распаковка с оператором *
  41. Метод __index__ в Python
  42. Конвертация изображений в PDF
  43. Объединение списков с использованием itertools.chain
  44. Получение имени функции с помощью inspect
  45. Мощь вложенных функций в Python

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