Курс 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. Оптимизация памяти с slots
  3. Применение команды break
  4. Избегайте ошибку FileNotFoundError
  5. Названия переменных
  6. Работа с библиотекой requests
  7. Методы HTTP запросов в Flask
  8. Чтение и запись TOML-конфигов
  9. Оптимизация строк в Python
  10. Регулярные выражения: метод match
  11. Оптимизация создания строк
  12. Распаковка аргументов в Python
  13. Сравнение объектов в Python
  14. Изменение списка срезом
  15. Создание пользовательской коллекции в Python
  16. Метод enumerate() в Python
  17. Разделение строки в Python
  18. Работа с функцией next() в Python
  19. Функции с дополнением
  20. Генераторы в Python
  21. Работа с исключениями в Python
  22. Улучшение читаемости кода в Python
  23. Обмен переменными в Jupyter
  24. Работа с кортежами в Python
  25. Вычисление логарифмов в Python
  26. Многоточие в Python
  27. Операции с матрицами в Python
  28. Условные выражения в Python
  29. Установка максимального количества цифр
  30. Python Метод sleep() времени
  31. Декодирование строк в Python
  32. Поиск подстроки в строке
  33. Основы работы со строками в Python
  34. Декораторы с аргументами
  35. Python: Фильтрация списков с помощью filter()
  36. Просмотр атрибутов и методов класса
  37. Retrying в Python: повторные вызовы
  38. Работа с многоуровневыми словарями в Python
  39. Изменение регистра данных
  40. Нарезка списков в Python
  41. Python Calendar Usage
  42. Очистка строки в Python

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