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

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

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

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


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

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

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

Автор урока

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

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

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

  1. Разработка Telegram-ботов
  2. Изменение IP-адреса в Python
  3. Форматирование кода на Python
  4. Принципы SRP и OCP
  5. Копирование объектов в Python
  6. Обмен переменными в Jupyter
  7. Namedtuple в Python
  8. Тайное преобразование типа ключа
  9. Сравнение неупорядоченных списков
  10. Работа с переменными в Python
  11. Форматирование вывода с F-строками
  12. Оформление кода на Python
  13. Ускорение обработки данных с %autoawait
  14. Defaultdict в Python
  15. Получение имени функции с помощью inspect
  16. Работа с изображениями PIL
  17. Оператор in для Python
  18. Генерация случайных чисел в Python
  19. Преобразование генераторов в циклы
  20. Подписка на каналы разработчиков
  21. Парсинг статей с Newspaper3k
  22. Группировка элементов Python
  23. Объединение словарей в Python
  24. Метод gt в Python
  25. Цикл for в Python
  26. Отслеживание выполнения программы с библиотекой tqdm
  27. Импорт объектов из модулей
  28. Подсчет часто встречающихся элементов
  29. Magic Commands — улучшение работы с Python
  30. Метод __index__ в Python
  31. Преобразование чисел в слова
  32. Модуль pprint: улучшение вывода данных
  33. Метод count() для списков
  34. Лямбда-функции в Python
  35. Работа с JSON данными в Python
  36. Копирование списков в Python
  37. Пространство имен в Python
  38. Получение локальных переменных в Python
  39. Асинхронное выполнение задач в Python
  40. Просмотр атрибутов и методов класса
  41. Метод get для словаря
  42. Объединение списков в Python
  43. Операции с числами в Python
  44. Именование переменных в Python
  45. Удаление дубликатов из списка
  46. Удаление файлов в Python
  47. Создание даты из строки ISO
  48. Переменная с нижним подчеркиванием
  49. Оператор Walrus в Python 3.8
  50. Метод add для класса Vector

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