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

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

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

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


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

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

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

Автор урока

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

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

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

  1. Обработка ошибок в JSON данных
  2. Создание копии итератора
  3. Работа с deque из collections
  4. Отправка HTTP-запросов в Python
  5. Изменяемые и неизменяемые объекты
  6. Использование type hints
  7. Управление сессиями в Python
  8. Модуль functools в Python
  9. Избегайте изменяемых аргументов
  10. Codecademy в Telegram
  11. Метод remove() для удаления элемента из списка
  12. Библиотека Emoji: использование смайлов в Python
  13. Concrete Paths — метод .with_suffix()
  14. Асинхронное программирование с asyncio
  15. Инвертирование словаря
  16. Отладка кода
  17. Функции с необязательными аргументами
  18. Генерация случайных чисел Python
  19. Генераторы в Python
  20. Переопределение метода __floordiv__
  21. Вычисление натуральных логарифмов в NumPy
  22. Подробная информация о %pinfo
  23. Обход дочерних элементов BeautifulSoup
  24. Настройка нарезки списков
  25. Проверка кортежей.
  26. Операции с датами в Python
  27. Создание новых функций через partial
  28. Основные операции с библиотекой Numpy
  29. Классы данных в Python
  30. Очистка входных данных
  31. Строковое представление объектов
  32. Измерение времени выполнения в Python
  33. Профилирование данных с Pandas.
  34. Обход словаря в Python
  35. Оператор «or» в Python
  36. Статическая типизация в Python
  37. Декораторы в Python
  38. Импорт в Python: список all
  39. Генераторы в Python
  40. Метод join() для объединения элементов
  41. Метод count() для списков
  42. Работа со слайсами
  43. Добавление элемента к кортежу
  44. Изменение элемента списка
  45. Конкатенация строк с методом join()
  46. UserList в Python: Описание и примеры использования
  47. Генерация резюме в Gensim

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