Курс Python → Оптимизация памяти с slots
Атрибут slots в Python позволяет явно объявлять элементы данных (например, свойства) и запрещать создание словаря dict и weakref (если явно не объявлено в slots или не доступно в родительском элементе). Наличие магического атрибута slots делает несколько вещей. Во-первых, он ограничивает допустимый набор имен атрибутов объекта только перечисленными именами. Во-вторых, поскольку атрибуты теперь фиксированы, больше нет необходимости хранить атрибуты в словаре экземпляра, поэтому атрибут dict удаляется (если только базовый класс уже не имеет его; он также может быть добавлен обратно подклассом, который не имеет slots).
При использовании атрибута slots атрибуты хранятся в заранее определенных местах в массиве. Это позволяет экономить память и ускоряет доступ к атрибутам объекта. Кроме того, использование slots может помочь избежать опечаток в именах атрибутов, так как только объявленные имена будут доступны.
Для объявления атрибута slots в классе необходимо просто добавить атрибут slots со списком имен атрибутов, которые должны быть доступны. Например:
class MyClass:
__slots__ = ['attribute1', 'attribute2']
В данном примере класс MyClass имеет только два атрибута, attribute1 и attribute2, которые будут доступны для объектов этого класса. При попытке обратиться к другим атрибутам будет вызвано исключение.
Другие уроки курса "Python"
- Декораторы в Python
- enumerate() в Python для работы с индексами
- Генерация строк с .join()
- Установка и использование Python-dateutil
- PATCH-запрос с библиотекой requests
- Измерение времени выполнения кода
- Оператор in в Python
- Комментарии в Python
- Работа с парами ключ-значение
- Использование html-скриптов в Jupyter Notebook
- Разбиение текста в Python
- Работа с очередями в Python
- Хранение переменных в Python.
- Работа с deque из collections
- Поиск уникальных и повторяющихся элементов
- Управление браузером с Selenium
- Замер времени выполнения кода
- Кортежи в Python: особенности и преимущества
- 9 уловок для чистого кода
- Метод clear для коллекций
- Метод __index__ в Python
- Функция zip() в Python
- Генерация случайных чисел в Python
- Генерация UUID в Python
- Создание GUI с Tkinter: Entry
- Определение объема памяти объекта
- Python и Монти Пайтон
- Распаковка элементов массива
- Идентификатор объекта в Python
- Форматирование чисел в Python
- Глобальные переменные в Python
- Python itertools combinations() — группировка элементов
- Генераторы в Python
- Функция pow() — возвести число в степень
- Фильтрация элементов с помощью islice
- Сглаживание списка
- Работа с timedelta
- Функция zip() в Python
- Использование type hints
- Извлечение статей с newspaper3k
- Тестирование с responses
- Объявление переменных в Python
- Оптимизация памяти с __slots__
- Операторы присваивания в Python
- Удаление файлов и папок в Python
- Проверка строки на палиндром
- Создание треугольника Паскаля
- Оформление кода на Python
- Python-dateutil — работа с датами
- Глобальные переменные в Python















