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

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

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

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


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

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

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

Автор урока

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

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

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

  1. Поиск уникальных элементов строкой в Python
  2. Создание словарей и множеств в Python.
  3. Метод __getitem__ в Python
  4. Тестирование времени с Freezegun
  5. Декораторы классов
  6. Заказ карты Тинькофф Black
  7. Codecademy в Telegram
  8. F-строки в Python 3.8
  9. Объединение объектов в Python
  10. Распаковка аргументов в Python
  11. Установка Python3.7 и PIP
  12. Проблемы с именами переменных
  13. Каналы Senior: Python, Java, Frontend, SQL, C++
  14. Настройка вывода NumPy
  15. Python Аргументы по умолчанию
  16. Функция pow() — возвести число в степень
  17. Форматирование заголовков в Python
  18. Методы Python для работы с данными
  19. Создание новых списков
  20. Поиск email
  21. Управление асинхронными задачами с помощью Semaphore
  22. Именованные кортежи в Python
  23. Работа с изображениями PIL
  24. Подсчет элементов в списке с Counter
  25. Разбиение строки в Python
  26. Атрибуты класса и экземпляра
  27. inspect в Python: анализ кода
  28. Генераторы в Python
  29. Метод pop() списка
  30. Объединение, распаковка и деструктуризация
  31. Логирование с Logzero
  32. Мониторинг работы программы Py-spy
  33. Модуль itertools: комбинации и перестановки
  34. Декоратор total_ordering для сравнения объектов
  35. Оператор «not» в Python
  36. Вычисление фазы комплексного числа
  37. Python Enum Weekday Usage
  38. Преобразование чисел в слова
  39. Избегайте изменяемых аргументов
  40. Виртуальные среды в Python
  41. Добавление цвета в консоли
  42. Экспорт данных в файл.
  43. Модуль inspect: получение информации о объектах
  44. Необязательные аргументы в Python

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