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

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

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

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


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

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

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

Автор урока

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

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

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

  1. Сравнение def и lambda функций в Python
  2. Работа с модулем random
  3. Конкатенация строк с помощью join()
  4. Конкатенация строк с методом join()
  5. Codecademy в Telegram
  6. Декораторы с @wraps
  7. Вывод букв строки в Python
  8. Разделение строк в Python
  9. Тип данных TypeVarTuple
  10. Удаление ресурса в Python
  11. Метод rsub для пользовательских чисел
  12. Идентификатор объекта в Python
  13. Метод count в Python: почему count(», ») возвращает 4?
  14. Лямбда-функции в Python
  15. Метод rrshift для пользовательских объектов
  16. Работа с парами ключ-значение
  17. Библиотека sh: удобные команды терминала
  18. Библиотека itertools: объединение списков
  19. Работа с пакетами
  20. Умножение строк и списков
  21. Метод remove() для удаления элемента из списка
  22. Создание копии списка в Python
  23. Измерение времени выполнения кода
  24. Сортировка с помощью key
  25. Генераторы в Python
  26. Цикл for в Python
  27. Управление импортом в Python
  28. Форматирование чисел в Python
  29. Вложенные генераторы в Python
  30. Аннотации типов в Python
  31. Применение функции к каждому элементу списка
  32. Форматирование заголовков в Python
  33. Работа с комплексными числами
  34. Настройка шрифта и цвета в Tkinter
  35. Многопоточность в Python
  36. Изменение элемента списка
  37. Хеширование паролей с использованием salt
  38. Сохранение и загрузка модели в PyTorch
  39. Работа с файлами в Python
  40. Проверка переменных окружения в Python
  41. Pretty-printing JSON в Python
  42. Особенности запятых в Python
  43. Оператор обр. импликации
  44. Преобразование вложенного списка
  45. Метод get() в Python
  46. Использование метода lower()
  47. Генераторные функции в Python

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