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

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

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

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


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

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

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

Автор урока

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

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

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

  1. Срезы в Numpy
  2. Метод __ixor__ для побитового исключающего ИЛИ
  3. Генераторные функции в Python
  4. Создание функций высшего порядка
  5. Цикл for в Python
  6. Метод split() в Python
  7. Расширение операции побитового «и» в Python
  8. Сглаживание списка
  9. Цикл for в Python
  10. Списковые включения в Python
  11. Определение объема памяти объекта
  12. Метод title() в Python
  13. Отрицательные индексы списков
  14. Особенности ключей словаря в Python
  15. Разность множеств
  16. Метод rmatmul для обратного матричного умножения
  17. Преобразование текста в нижний регистр
  18. Многоточие в Python
  19. Изменение списка срезом
  20. Списковый компрехеншен.
  21. Создание новых списков в Python
  22. Генераторы в Python
  23. Оптимизация методов в Python 3.7
  24. Поиск частого элемента
  25. Объединение итераторов
  26. Список переменных в Python
  27. Метод split() для разделения строк
  28. Удаление элемента по индексу в Python
  29. Вывод баннеров
  30. Декоратор total_ordering для класса Point
  31. Методы __repr__ и __str__ в Python
  32. Метод join() с набором
  33. Работа с словарями в Python
  34. Декораторы в Python
  35. Курс по дообучению ChatGPT
  36. Динамические маршруты во Flask
  37. Переворот списка в Python
  38. Реверс строки и списка в Python.
  39. Python 3.12: переиспользование кавычек
  40. Удаление файлов и папок в Python
  41. Работа с Path в Python
  42. Лимиты на ресурсы Python
  43. Подписка на @SelectelNews
  44. Python: возвращение нескольких значений
  45. Резервирование символов в Python
  46. Сравнение объектов в Python

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