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

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

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

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


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

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

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

Автор урока

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

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

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

  1. Использование подчеркивания в REPL
  2. Работа с изображениями Pillow
  3. Проверка типа объекта в Python
  4. Генерация строк с .join()
  5. Установка Python3.7 и PIP
  6. Переворот строки с помощью срезов
  7. Поиск частых элементов в списке
  8. Добавление кнопки в tkinter
  9. capitalize() — изменение регистра первого символа строки
  10. Раздувающийся словарь в Python
  11. Генераторы в Python
  12. Печать календаря в Python
  13. Непрерывная проверка в Python
  14. Расчет времени выполнения кода
  15. Установка и обучение ChatterBot
  16. Регистрация на курсы SF Education
  17. Оператор * в Python
  18. Перезагрузка оператора в Python
  19. Объявление переменных в Python
  20. Генераторы списков в Python
  21. Мониторинг памяти с Pympler
  22. Установка пакета в Python
  23. Flask — веб-фреймворк Python
  24. Аргумент по умолчанию
  25. Блок else в циклах.
  26. Комментарии в Python
  27. Метод pos в Python
  28. Создание вложенного генератора
  29. Функция map() и ленивая оценка
  30. Установка и использование Logzero
  31. Удаление URL-адресов в Python
  32. Иерархия классов в Python
  33. Запрос DELETE с библиотекой requests
  34. Python Поверхностное Копирование
  35. Копирование файлов с shutil()
  36. Добавление цвета в консоли
  37. Метод is_absolute() для PurePath
  38. Рациональные числа в Python
  39. Оператор in и not in в Python
  40. Управление мышью и клавиатурой с Pyautogui
  41. Оператор assert в Python
  42. TypedDict для kwargs в Python 3.12
  43. Метод title() в Python
  44. Выражения-генераторы в Python
  45. Модуль Operator в Python
  46. Округление дробей в Python
  47. Обработка ошибки IndexError

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