Курс 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
  3. Работа с индексами списков
  4. Генераторы в Python
  5. Основы слова
  6. Поиск элементов BeautifulSoup
  7. Определение наиболее частого элемента с помощью collections.Counter
  8. Улучшенные подсказки для импорта в Python 3.12
  9. Генераторы в Python
  10. Python Поверхностное Копирование
  11. Создание треугольника Паскаля
  12. Получение текущей даты в Python
  13. Преобразование строк в числа с плавающей запятой
  14. Применение команды break
  15. Flask: создание веб-приложений
  16. GitHub в Telegram: подписка на уведомления
  17. Сложные типы данных в Python
  18. Подписка на каналы разработчиков
  19. Операторы Splat и splatty-splat
  20. Список и кортеж в Python
  21. Получение списка файлов в директории с использованием os
  22. Команда %dhist — список посещенных каталогов
  23. Получение локальных переменных в Python
  24. Управление сессиями в Python
  25. Оформление кода на Python
  26. 9 уловок для чистого кода
  27. Именованные аргументы в Python
  28. Декоратор Ajax required
  29. Удаление URL-адресов в Python
  30. Форматирование даты с strftime()
  31. Оформление кода по PEP 8
  32. Нахождение максимального значения и его индекса в списке
  33. Обработка ошибок ввода данных
  34. Поиск подстроки в строке
  35. Объединение списков в строку
  36. Комментарии в Python
  37. Получение текущего времени в Python
  38. Слияние словарей в Python 3.9
  39. Реверс строки в Python
  40. Отслеживание прогресса с tqdm
  41. GitHub в Telegram: подписка на уведомления
  42. Оператор обр. импликации
  43. Работа с областями видимости переменных
  44. Python и Монти Пайтон
  45. Работа с deque из collections
  46. Отладка производительности Python
  47. Мощь вложенных функций в Python
  48. Операторы объединения в Python 3.9
  49. ChainMap избыточные ключи
  50. Работа с очередями в Python

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