Курс Python → Оптимизация памяти с slots
Атрибут slots в Python позволяет явно объявлять элементы данных (например, свойства) и запрещать создание словаря dict и weakref (если явно не объявлено в slots или не доступно в родительском элементе). Наличие магического атрибута slots делает несколько вещей. Во-первых, он ограничивает допустимый набор имен атрибутов объекта только перечисленными именами. Во-вторых, поскольку атрибуты теперь фиксированы, больше нет необходимости хранить атрибуты в словаре экземпляра, поэтому атрибут dict удаляется (если только базовый класс уже не имеет его; он также может быть добавлен обратно подклассом, который не имеет slots).
При использовании атрибута slots атрибуты хранятся в заранее определенных местах в массиве. Это позволяет экономить память и ускоряет доступ к атрибутам объекта. Кроме того, использование slots может помочь избежать опечаток в именах атрибутов, так как только объявленные имена будут доступны.
Для объявления атрибута slots в классе необходимо просто добавить атрибут slots со списком имен атрибутов, которые должны быть доступны. Например:
class MyClass:
__slots__ = ['attribute1', 'attribute2']
В данном примере класс MyClass имеет только два атрибута, attribute1 и attribute2, которые будут доступны для объектов этого класса. При попытке обратиться к другим атрибутам будет вызвано исключение.
Другие уроки курса "Python"
- Разработка Telegram-ботов
- Изменение IP-адреса в Python
- Форматирование кода на Python
- Принципы SRP и OCP
- Копирование объектов в Python
- Обмен переменными в Jupyter
- Namedtuple в Python
- Тайное преобразование типа ключа
- Сравнение неупорядоченных списков
- Работа с переменными в Python
- Форматирование вывода с F-строками
- Оформление кода на Python
- Ускорение обработки данных с %autoawait
- Defaultdict в Python
- Получение имени функции с помощью inspect
- Работа с изображениями PIL
- Оператор in для Python
- Генерация случайных чисел в Python
- Преобразование генераторов в циклы
- Подписка на каналы разработчиков
- Парсинг статей с Newspaper3k
- Группировка элементов Python
- Объединение словарей в Python
- Метод gt в Python
- Цикл for в Python
- Отслеживание выполнения программы с библиотекой tqdm
- Импорт объектов из модулей
- Подсчет часто встречающихся элементов
- Magic Commands — улучшение работы с Python
- Метод __index__ в Python
- Преобразование чисел в слова
- Модуль pprint: улучшение вывода данных
- Метод count() для списков
- Лямбда-функции в Python
- Работа с JSON данными в Python
- Копирование списков в Python
- Пространство имен в Python
- Получение локальных переменных в Python
- Асинхронное выполнение задач в Python
- Просмотр атрибутов и методов класса
- Метод get для словаря
- Объединение списков в Python
- Операции с числами в Python
- Именование переменных в Python
- Удаление дубликатов из списка
- Удаление файлов в Python
- Создание даты из строки ISO
- Переменная с нижним подчеркиванием
- Оператор Walrus в Python 3.8
- Метод add для класса Vector















