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

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

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

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


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

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

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

Автор урока

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

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

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

  1. Переопределение метода __pow__
  2. Поиск подстроки в строке
  3. Добавление цвета в консоли
  4. Создание словаря в Python
  5. Объединение строк с помощью метода join
  6. Метод Self в Python
  7. Множественное назначение в Python
  8. Работа с датой и временем в Python
  9. Поиск кода
  10. Преобразование строк в числа с плавающей запятой
  11. Создание словарей и множеств в Python
  12. Отладка в Python
  13. Генераторы списков в Python
  14. Роль запятой в Python
  15. Преобразование строк в числа в Python
  16. Работа со словарями
  17. Использование метода lower()
  18. Функция enumerate в Python
  19. Преобразование списков в словарь
  20. Python groupby() из itertools: работа с повторяющимися элементами
  21. Определение наиболее частого элемента с помощью collections.Counter
  22. Работа с NumPy.linalg
  23. Копирование объектов в Python
  24. Работа со словарями в Python
  25. Переопределение метода divmod
  26. Метод setdefault() в Python
  27. Проверка переменных окружения в Python
  28. Оператор «or» в Python
  29. Основные методы NumPy
  30. Функциональное программирование в Python
  31. Python union() функция — объединение множеств
  32. Закрытие файла в Python
  33. Colorama: окрашивание текста в Python
  34. Перегрузка операторов в Python
  35. Сравнение def и lambda-функций
  36. Деление в Python
  37. Создание спинбокса в tkinter
  38. UserString в Python
  39. Защита данных в Python
  40. Работа со словарями с defaultdict из collections
  41. Руководство по использованию Colorama
  42. Список и кортеж в Python

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