Курс 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. Переопределение метода xor в Python
  3. Bootle — простой веб-фреймворк
  4. Генераторы в Python
  5. Разница между датами
  6. Структура данных словарь в Python
  7. Работа с множествами в Python
  8. Комментарии в Python
  9. Оптимизация методов в Python 3.7
  10. Динамические маршруты во Flask
  11. Декоратор Ajax required
  12. Многострочные комментарии в Python
  13. Установка и использование Telegram API в Python
  14. Counter() — подсчет элементов
  15. Декораторы в Python
  16. Профилирование данных с Pandas.
  17. Импорт модулей в Python 3.12
  18. Генерация случайных данных в NumPy
  19. Оператор zip в Python
  20. Объединение кортежей в Python
  21. Управление ресурсами с контекстными менеджерами
  22. Многострочные строки в Python
  23. Декоратор Property в Python
  24. Обход элементов в Python
  25. Измерение времени выполнения кода
  26. Работа с необработанными строками
  27. Команда %dhist — список посещенных каталогов
  28. Поиск индекса элемента в списке
  29. Синхронизация потоков с time.sleep()
  30. Манипуляция формой массива в Numpy
  31. Создание коллекций из выражения-генератора
  32. Pillow: работа с изображениями
  33. Отступы в Python
  34. Работа со стеком в Python
  35. Оптимизация параметров в Python
  36. Получение текущей даты и времени с помощью datetime
  37. Выражения-генераторы в Python
  38. Преобразование PowerPoint в PDF.
  39. Форматирование кода на Python
  40. Работа с очередями в Python
  41. Метод difference_update() — разность множеств
  42. Распаковка с оператором *
  43. Оператор Walrus в Python
  44. Решатель судоку на Python с pygame
  45. Проекты на Python

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