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

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

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

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


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

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

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

Автор урока

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

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

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

  1. Concrete Paths в Python
  2. Получение текущей даты и времени с помощью datetime
  3. Получение пути к текущему скрипту с помощью os
  4. Операции с матрицами в Python
  5. Пустой оператор pass в Python
  6. Иерархия классов в Python
  7. Получение текущей даты и времени
  8. Установка и использование emoji
  9. Добавление Progressbar в Python
  10. Лямбда-функции в Python
  11. Функции высшего порядка в Python
  12. Операторы увеличения и уменьшения в Python
  13. Разбиение текста в Python
  14. Обмен данными с asyncio.Queue
  15. Python 3.12: переиспользование кавычек
  16. Ввод нескольких значений
  17. Работа с датами в Python
  18. Функции в одну строку
  19. Работа с коллекциями Python
  20. Итерации в Python
  21. Установка и использование библиотеки google
  22. Основные операции с Numpy
  23. Объединение объектов в Python
  24. Работа с NumPy массивами
  25. Работа с необработанными строками
  26. Удаление дубликатов из списка
  27. Разделение строк методом split()
  28. Вычисление времени выполнения
  29. Синхронизация потоков с time.sleep()
  30. Настройка нарезки списков
  31. Преобразование объекта в строку
  32. Извлечение статей с newspaper3k
  33. IPython и Jupyter Notebook: руководство
  34. Очистка входных данных
  35. Псевдонимы в Python
  36. Метод lt для сортировки объектов
  37. Обработка ошибок в Python
  38. Работа с геоданными с помощью geopy
  39. Импорт классов из другого файла
  40. Конкатенация строковых литералов
  41. Создание класса в Python
  42. Python 3.12: Псевдонимы типов
  43. Создание OrderedDict
  44. Работа с переменными в Python
  45. Генератор списка в Python
  46. Атрибуты массивов в Numpy
  47. Официальный канал Python в Telegram
  48. Python Метод sleep() из time

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