Курс 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. enumerate() в Python для работы с индексами
  3. Генерация строк с .join()
  4. Установка и использование Python-dateutil
  5. PATCH-запрос с библиотекой requests
  6. Измерение времени выполнения кода
  7. Оператор in в Python
  8. Комментарии в Python
  9. Работа с парами ключ-значение
  10. Использование html-скриптов в Jupyter Notebook
  11. Разбиение текста в Python
  12. Работа с очередями в Python
  13. Хранение переменных в Python.
  14. Работа с deque из collections
  15. Поиск уникальных и повторяющихся элементов
  16. Управление браузером с Selenium
  17. Замер времени выполнения кода
  18. Кортежи в Python: особенности и преимущества
  19. 9 уловок для чистого кода
  20. Метод clear для коллекций
  21. Метод __index__ в Python
  22. Функция zip() в Python
  23. Генерация случайных чисел в Python
  24. Генерация UUID в Python
  25. Создание GUI с Tkinter: Entry
  26. Определение объема памяти объекта
  27. Python и Монти Пайтон
  28. Распаковка элементов массива
  29. Идентификатор объекта в Python
  30. Форматирование чисел в Python
  31. Глобальные переменные в Python
  32. Python itertools combinations() — группировка элементов
  33. Генераторы в Python
  34. Функция pow() — возвести число в степень
  35. Фильтрация элементов с помощью islice
  36. Сглаживание списка
  37. Работа с timedelta
  38. Функция zip() в Python
  39. Использование type hints
  40. Извлечение статей с newspaper3k
  41. Тестирование с responses
  42. Объявление переменных в Python
  43. Оптимизация памяти с __slots__
  44. Операторы присваивания в Python
  45. Удаление файлов и папок в Python
  46. Проверка строки на палиндром
  47. Создание треугольника Паскаля
  48. Оформление кода на Python
  49. Python-dateutil — работа с датами
  50. Глобальные переменные в Python

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