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

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

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

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


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

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

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

Автор урока

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

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

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

  1. Библиотека Chartify: руководство
  2. Слияние словарей в Python 3.9
  3. Присвоение и ссылки
  4. Ограничение итераций в Python
  5. Генерация фальшивых данных с Faker
  6. Сортировка данных в Python
  7. Списки: объединение, изменение
  8. Отладка регулярных выражений в Python
  9. Подсчет элементов с помощью Counter
  10. Измерение времени выполнения кода
  11. Проверка подстроки в строке с помощью in
  12. Возвращение нескольких значений через кортеж или класс
  13. Работа с модулем random
  14. Codecademy в Telegram
  15. Профилирование с Pandas
  16. Метод pos в Python
  17. Удаление файлов с shutil.os.remove()
  18. Извлечение аудио из видео
  19. Метод clear для коллекций
  20. Установка виртуального окружения Python
  21. Измерение потребления памяти при сортировке
  22. Поиск кода
  23. Логирование в Python
  24. Создание новой даты в Python
  25. Оператор распаковки в Python
  26. Работа с Telegram API на Python
  27. Локальные переменные.
  28. Методы работы со списками
  29. Разбиение текста в Python
  30. Преобразование типов данных в set comprehension
  31. Преобразование генераторов в циклы
  32. Defaultdict в Python
  33. Работа с набором данных CIFAR10 в PyTorch
  34. Правила именования переменных
  35. Создание копии списка в Python
  36. Виртуальные среды в Python
  37. Настройка Cron
  38. Логирование с Logzero: ротация файла
  39. Python Метод sleep() из time
  40. Модуль functools в Python
  41. Форматирование строк в Python
  42. Работа с массивами в Python
  43. Модуль Operator в Python
  44. Метод enumerate() в Python
  45. List Comprehension Tutorial
  46. Функции map, filter и reduce
  47. Операции с кортежами

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