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

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

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

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


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

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

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

Автор урока

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

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

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

  1. UserList в Python: Описание и примеры использования
  2. Python Аргументы по умолчанию
  3. Хеширование паролей с использованием salt
  4. Метод get для словаря
  5. Оператор @ для умножения матриц
  6. Создание панели меню Tkinter
  7. Копирование в Python
  8. Импорт с альтернативным именем
  9. Ошибка NotImplemented в Python
  10. Замена символов в строке
  11. Экранирование символов в Python
  12. Метод enumerate() в Python
  13. Вложенные генераторы в Python
  14. Работа с дробями в Python
  15. Установка переменной среды в Python
  16. Метод __index__ в Python
  17. Комплексные числа в Python
  18. Списки в Python: основы
  19. Метод split() для разделения строк
  20. *args и **kwargs в Python
  21. Работа с модулем cmath
  22. Изменение элемента списка
  23. Создание таблиц в Python с PrettyTable
  24. Форматирование строк в Python
  25. Функция rsplit() в Python
  26. Создание списков в Python
  27. Асинхронный код в Python
  28. Повторение элементов в Python
  29. Преобразование строк в числа с плавающей запятой
  30. Освоение Python
  31. Работа с Colorama
  32. Оператор умножения для вектора
  33. Многострочные комментарии в Python
  34. Сортировка HTML по CSS-селектору
  35. Работа с файлами в Python
  36. Преобразование данных в Python
  37. Создание словарей с defaultdict()
  38. Работа с defaultdictами в Python
  39. Структура данных словарь в Python
  40. Работа с CSV в Python
  41. Тестирование функции сложения
  42. Форматирование строк в Python
  43. Расширение информации об ошибке в Python
  44. Работа с URL-адресами в Python
  45. Поиск индекса элемента
  46. Получение списка кортежей из словаря

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