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

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

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

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


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

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

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

Автор урока

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

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

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

  1. Генераторы списков
  2. Проблема сравнения словарей
  3. Вычисление логарифмов в Python
  4. Управление фоновыми задачами в Python
  5. Разделение строки на подстроки в Python
  6. Создание уникального множества
  7. Создание инструмента обнаружения плагиата
  8. Профилирование кода
  9. Создание спинбокса в tkinter
  10. Функции в Python
  11. Создание словарей в Python
  12. Python itertools combinations() — группировка элементов
  13. Нахождение самого длинного слова в списке с помощью max
  14. Оператор деления для класса Rational
  15. Удаление файлов в Python
  16. Метод __call__ в Python
  17. %pinfo: получение информации об объекте
  18. Именование столбцов в Python с pandas
  19. Введение в PyTorch
  20. Импорт и использование модулей в Python
  21. Работа с датой и временем в Python
  22. Транспонирование 2D-массива с помощью zip
  23. Python: Фильтрация списков с помощью filter()
  24. Работа со словарями в Python
  25. Namedtuple в Python
  26. Pretty-printing JSON в Python
  27. Объединение коллекций в Python
  28. Вычисление фазы комплексного числа
  29. Объединение словарей в Python
  30. Циклы for в Python
  31. Основные методы NumPy
  32. Работа со строками в Python
  33. Переменные в Python
  34. Управление экспортом элементов
  35. Преобразование чисел в Python
  36. Функция count() в Python
  37. Расчет времени выполнения программы
  38. Работа с Requests для HTTP-запросов
  39. Метод __ilshift__ для битового сдвига влево
  40. Подсчет частотности элементов в Python
  41. Функции классификации комплексных чисел
  42. Конвертация коллекций в Python.
  43. Эффективная конкатенация строк с использованием join()
  44. Автоматизация скриптов на AWS Lightsail.
  45. Метод rlshift для битового сдвига

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