Курс Python → Оптимизация памяти с slots
Атрибут slots в Python позволяет явно объявлять элементы данных (например, свойства) и запрещать создание словаря dict и weakref (если явно не объявлено в slots или не доступно в родительском элементе). Наличие магического атрибута slots делает несколько вещей. Во-первых, он ограничивает допустимый набор имен атрибутов объекта только перечисленными именами. Во-вторых, поскольку атрибуты теперь фиксированы, больше нет необходимости хранить атрибуты в словаре экземпляра, поэтому атрибут dict удаляется (если только базовый класс уже не имеет его; он также может быть добавлен обратно подклассом, который не имеет slots).
При использовании атрибута slots атрибуты хранятся в заранее определенных местах в массиве. Это позволяет экономить память и ускоряет доступ к атрибутам объекта. Кроме того, использование slots может помочь избежать опечаток в именах атрибутов, так как только объявленные имена будут доступны.
Для объявления атрибута slots в классе необходимо просто добавить атрибут slots со списком имен атрибутов, которые должны быть доступны. Например:
class MyClass:
__slots__ = ['attribute1', 'attribute2']
В данном примере класс MyClass имеет только два атрибута, attribute1 и attribute2, которые будут доступны для объектов этого класса. При попытке обратиться к другим атрибутам будет вызвано исключение.
Другие уроки курса "Python"
- Чтение и запись TOML-конфигов
- Метод __index__ в Python
- Генераторы в Python
- Наследование в программировании
- Принципы Zen of Python
- Конкатенация строковых литералов
- Метод get для словаря
- Построение графиков в Matplotlib
- Извлечение новостей с помощью newspaper3k
- Удаление элементов из списка в Python
- Изменение регистра данных
- Методы __repr__ и __str__ в Python
- Активация Matplotlib в Jupyter
- Нахождение максимального значения и его индекса в списке
- Сокращение ссылок с pyshorteners
- Объединение словарей в Python
- Декораторы в Python
- Цикл for в Python
- Список и кортеж в Python
- Асинхронное выполнение задач в Python
- Именованные срезы в Python
- f-строки в формате строк
- Инициализация структур данных
- Форматирование строк в Python
- Изменение списка срезами
- Генерация случайных чисел в Python
- Ускорение выполнения кода в Python
- Измерение времени выполнения кода
- Работа с географическими данными.
- Список переменных с %who
- Извлечение данных из JSON
- Оптимизация гиперпараметров с Scikit Optimize
- Основы Python
- Работа с библиотекой requests
- Работа с collections в Python.
- Метод rsub в Python: расширение функциональности вычитания
- Работа со слайсами
- Вычисление фазы комплексного числа
- SciPy: широкий функционал для математических операций
- Использование функции enumerate()
- Удаление ключей из словаря
- Транспонирование 2D-массива с помощью zip
- Работа с collections.Counter
- Работа с timedelta в Python
- Оболочка Python
- Генератор чисел Фибоначчи
- Метод join() для объединения элементов строки















