Курс Python → Оптимизация памяти с slots
Атрибут slots в Python позволяет явно объявлять элементы данных (например, свойства) и запрещать создание словаря dict и weakref (если явно не объявлено в slots или не доступно в родительском элементе). Наличие магического атрибута slots делает несколько вещей. Во-первых, он ограничивает допустимый набор имен атрибутов объекта только перечисленными именами. Во-вторых, поскольку атрибуты теперь фиксированы, больше нет необходимости хранить атрибуты в словаре экземпляра, поэтому атрибут dict удаляется (если только базовый класс уже не имеет его; он также может быть добавлен обратно подклассом, который не имеет slots).
При использовании атрибута slots атрибуты хранятся в заранее определенных местах в массиве. Это позволяет экономить память и ускоряет доступ к атрибутам объекта. Кроме того, использование slots может помочь избежать опечаток в именах атрибутов, так как только объявленные имена будут доступны.
Для объявления атрибута slots в классе необходимо просто добавить атрибут slots со списком имен атрибутов, которые должны быть доступны. Например:
class MyClass:
__slots__ = ['attribute1', 'attribute2']
В данном примере класс MyClass имеет только два атрибута, attribute1 и attribute2, которые будут доступны для объектов этого класса. При попытке обратиться к другим атрибутам будет вызвано исключение.
Другие уроки курса "Python"
- Принципы Zen Python
- Разделение строк методом split()
- Декораторы в Python
- kwargs в Python
- Замер времени выполнения кода
- Замена атрибута в именованном кортеже
- Функции min(), max(), sum()
- Метод join() для объединения элементов строки
- Создание словаря и множества
- Удаление элемента по индексу
- Удаление ключа из словаря
- Работа с срезами в Numpy
- Повторение элементов в Python
- Добавление вложенных списков
- Управление сессиями в Python
- Объединение Python и Shell
- Создание списков в Python
- inspect в Python: анализ кода
- Оператор del в Python
- Отслеживание выполнения программы с библиотекой tqdm
- Импорт классов из другого файла
- Форматирование даты с strftime()
- Имена объектов в Python
- Логирование с Logzero
- Работа с датой и временем в Python
- Применение функций в Python
- Декоратор total_ordering для сравнения объектов
- Инверсия списка и строки
- Управление памятью в Python
- Обработка исключений в Python
- Управление доступом к модулю
- Удаление файлов с shutil.os.remove()
- Объединение словарей в Python
- Отрицательные индексы списков в Python
- Роль запятой в Python
- Подсчет элементов в списке с Counter
- Преобразование кортежа в словарь.
- Создание новых списков в Python
- Преобразование текста в нижний регистр
- Ускорение выполнения кода в Python
- Непрерывная проверка в Python
- Парсинг статей с Newspaper3k
- Извлечение новостей с помощью newspaper3k
- Метод join() для объединения элементов строки















