Курс 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
- Манипуляция формой массива в Numpy
- Удаление дубликатов из списка с помощью dict.fromkeys
- Непрерывная проверка в Python
- Метод join() для объединения элементов
- Функция sleep() в Python
- Логические значения в Python
- Распаковка с оператором *
- Получение текущей даты в Python
- Python: отличительная особенность — отступы
- Инвертирование словаря
- Метод join() с набором
- Сортировка в Python
- Разделение строк в Python
- split() без разделителя
- discard() — удаление элемента из множества
- Проверка на палиндром
- Метод join() для объединения элементов в строку.
- Зарезервированные слова в Python
- Создание комплексных чисел
- Нахождение хеша для бесконечности и NaN в Python
- Оператор match в Python
- Создание GUI с Tkinter: Entry
- Основы работы с os
- Python Метод sleep() из time
- Кортеж в Python: создание, доступ, изменение
- Функции map, filter, reduce
- Итерация по копии коллекции
- Python itertools combinations() — группировка элементов
- Простой калькулятор Python
- Функция с *args.
- Нахождение отличий в списках
- Копирование объектов в Python
- Вычисление логарифмов в Python
- Вычисление разности множеств в Python
- Сравнение строк в Python
- Хэш-функции в Python
- Печать комбинаций в Python с Itertools
- Работа с областями видимости переменных
- Enum в Python: создание и использование перечислений















