Курс 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. Генераторы списков в Python
  5. Манипуляция формой массива в Numpy
  6. Удаление дубликатов из списка с помощью dict.fromkeys
  7. Непрерывная проверка в Python
  8. Метод join() для объединения элементов
  9. Функция sleep() в Python
  10. Логические значения в Python
  11. Распаковка с оператором *
  12. Получение текущей даты в Python
  13. Python: отличительная особенность — отступы
  14. Инвертирование словаря
  15. Метод join() с набором
  16. Сортировка в Python
  17. Разделение строк в Python
  18. split() без разделителя
  19. discard() — удаление элемента из множества
  20. Проверка на палиндром
  21. Метод join() для объединения элементов в строку.
  22. Зарезервированные слова в Python
  23. Создание комплексных чисел
  24. Нахождение хеша для бесконечности и NaN в Python
  25. Оператор match в Python
  26. Создание GUI с Tkinter: Entry
  27. Основы работы с os
  28. Python Метод sleep() из time
  29. Кортеж в Python: создание, доступ, изменение
  30. Функции map, filter, reduce
  31. Итерация по копии коллекции
  32. Python itertools combinations() — группировка элементов
  33. Простой калькулятор Python
  34. Функция с *args.
  35. Нахождение отличий в списках
  36. Копирование объектов в Python
  37. Вычисление логарифмов в Python
  38. Вычисление разности множеств в Python
  39. Сравнение строк в Python
  40. Хэш-функции в Python
  41. Печать комбинаций в Python с Itertools
  42. Работа с областями видимости переменных
  43. Enum в Python: создание и использование перечислений

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