Курс Python → Оптимизация памяти с slots
Атрибут slots в Python позволяет явно объявлять элементы данных (например, свойства) и запрещать создание словаря dict и weakref (если явно не объявлено в slots или не доступно в родительском элементе). Наличие магического атрибута slots делает несколько вещей. Во-первых, он ограничивает допустимый набор имен атрибутов объекта только перечисленными именами. Во-вторых, поскольку атрибуты теперь фиксированы, больше нет необходимости хранить атрибуты в словаре экземпляра, поэтому атрибут dict удаляется (если только базовый класс уже не имеет его; он также может быть добавлен обратно подклассом, который не имеет slots).
При использовании атрибута slots атрибуты хранятся в заранее определенных местах в массиве. Это позволяет экономить память и ускоряет доступ к атрибутам объекта. Кроме того, использование slots может помочь избежать опечаток в именах атрибутов, так как только объявленные имена будут доступны.
Для объявления атрибута slots в классе необходимо просто добавить атрибут slots со списком имен атрибутов, которые должны быть доступны. Например:
class MyClass:
__slots__ = ['attribute1', 'attribute2']
В данном примере класс MyClass имеет только два атрибута, attribute1 и attribute2, которые будут доступны для объектов этого класса. При попытке обратиться к другим атрибутам будет вызвано исключение.
Другие уроки курса "Python"
- Сериализация и десериализация объектов
- Работа со случайными элементами
- Декораторы в Python
- Философия Python
- Объединение словарей в Python 3.5+
- Открытие и редактирование скриптов Python
- Генераторы в Python
- 9 уловок для чистого кода
- Избегайте изменяемых аргументов
- Транспонирование матрицы в Python
- Логирование с Loguru
- Создание новой даты в Python
- Разделение строк в Python
- Отладка в Python
- Потоковый ввод в Python
- Работа со словарями Python
- Форматирование заголовков в Python
- Документирование функций в Python
- Декораторы классов
- Поиск частых элементов в списке
- Функция sleep() в Python
- Работа с кортежами в Python
- Numpy: разбиение массивов
- Многострочные комментарии в Python
- Карта бомбоубежищ в Москве и Питере
- Сложные типы данных в Python
- Проверка дубликатов в Python
- Взаимодействие с внешними процессами в Python
- Зарезервированные слова в Python
- Работа с WindowsPath()
- Пространство имен в Python
- Копирование объектов в Python
- Метод split() для разделения строк
- Отладка утечек памяти в Python
- Передача параметров в Python
- Генерация ключей RSA
- Анонимные функции в Python
- Построение графиков в терминале с bashplotlib
- Сортировка HTML по CSS-селектору
- Применение функции к списку
- Установка пакетов с помощью pip
- Метод __index__ в Python
- Оператор (*) в Python
- Измерение времени выполнения кода
- Оформление текста в консоли с TermColor
- Регистрация на курсы SF Education















