Курс Python → Оптимизация памяти с slots
Атрибут slots в Python позволяет явно объявлять элементы данных (например, свойства) и запрещать создание словаря dict и weakref (если явно не объявлено в slots или не доступно в родительском элементе). Наличие магического атрибута slots делает несколько вещей. Во-первых, он ограничивает допустимый набор имен атрибутов объекта только перечисленными именами. Во-вторых, поскольку атрибуты теперь фиксированы, больше нет необходимости хранить атрибуты в словаре экземпляра, поэтому атрибут dict удаляется (если только базовый класс уже не имеет его; он также может быть добавлен обратно подклассом, который не имеет slots).
При использовании атрибута slots атрибуты хранятся в заранее определенных местах в массиве. Это позволяет экономить память и ускоряет доступ к атрибутам объекта. Кроме того, использование slots может помочь избежать опечаток в именах атрибутов, так как только объявленные имена будут доступны.
Для объявления атрибута slots в классе необходимо просто добавить атрибут slots со списком имен атрибутов, которые должны быть доступны. Например:
class MyClass:
__slots__ = ['attribute1', 'attribute2']
В данном примере класс MyClass имеет только два атрибута, attribute1 и attribute2, которые будут доступны для объектов этого класса. При попытке обратиться к другим атрибутам будет вызвано исключение.
Другие уроки курса "Python"
- Получение ID текущего процесса
- Округление в Python
- Принцип одной функции
- Управление фоновыми задачами в Python
- Управление сессиями в Python
- Преобразование объекта в строку
- Кортежи в Python: особенности и преимущества
- Создание функций с произвольным количеством аргументов
- Создание треугольника Паскаля
- Освобождение памяти в Python
- Метод __getitem__ в Python
- Поиск наиболее частого элемента в списке
- Подсчет часто встречающихся элементов
- Модуль itertools: комбинации и перестановки
- Множества и frozenset
- Списковое включение в Python
- Работа с timedelta в Python
- Работа с JSON данными в Python
- Вложенные циклы в Python
- Проекты на Python
- Декораторы в Python
- Генераторы списков
- Форматирование кода на Python
- Отладчик pdb: начало работы
- Импорт с альтернативным именем
- Операторы сравнения в Python
- Красивый вывод списка
- Функция count() в Python
- Обработка ошибки IndexError
- Howdoi — получение ответов из терминала
- Область видимости переменных
- Названия переменных
- Удаление дубликатов из списка
- Группы исключений в Python
- Управление асинхронными задачами на Python.
- Разделение строки с регулярными выражениями
- Генераторы в Python
- Область видимости переменных
- Работа с необработанными строками
- Распаковка с оператором *
- Метод __index__ в Python
- Конвертация изображений в PDF
- Объединение списков с использованием itertools.chain
- Получение имени функции с помощью inspect
- Мощь вложенных функций в Python















