Курс Python → Оптимизация памяти с slots
Атрибут slots в Python позволяет явно объявлять элементы данных (например, свойства) и запрещать создание словаря dict и weakref (если явно не объявлено в slots или не доступно в родительском элементе). Наличие магического атрибута slots делает несколько вещей. Во-первых, он ограничивает допустимый набор имен атрибутов объекта только перечисленными именами. Во-вторых, поскольку атрибуты теперь фиксированы, больше нет необходимости хранить атрибуты в словаре экземпляра, поэтому атрибут dict удаляется (если только базовый класс уже не имеет его; он также может быть добавлен обратно подклассом, который не имеет slots).
При использовании атрибута slots атрибуты хранятся в заранее определенных местах в массиве. Это позволяет экономить память и ускоряет доступ к атрибутам объекта. Кроме того, использование slots может помочь избежать опечаток в именах атрибутов, так как только объявленные имена будут доступны.
Для объявления атрибута slots в классе необходимо просто добавить атрибут slots со списком имен атрибутов, которые должны быть доступны. Например:
class MyClass:
__slots__ = ['attribute1', 'attribute2']
В данном примере класс MyClass имеет только два атрибута, attribute1 и attribute2, которые будут доступны для объектов этого класса. При попытке обратиться к другим атрибутам будет вызвано исключение.
Другие уроки курса "Python"
- Использование подчеркивания в REPL
- Работа с изображениями Pillow
- Проверка типа объекта в Python
- Генерация строк с .join()
- Установка Python3.7 и PIP
- Переворот строки с помощью срезов
- Поиск частых элементов в списке
- Добавление кнопки в tkinter
- capitalize() — изменение регистра первого символа строки
- Раздувающийся словарь в Python
- Генераторы в Python
- Печать календаря в Python
- Непрерывная проверка в Python
- Расчет времени выполнения кода
- Установка и обучение ChatterBot
- Регистрация на курсы SF Education
- Оператор * в Python
- Перезагрузка оператора в Python
- Объявление переменных в Python
- Генераторы списков в Python
- Мониторинг памяти с Pympler
- Установка пакета в Python
- Flask — веб-фреймворк Python
- Аргумент по умолчанию
- Блок else в циклах.
- Комментарии в Python
- Метод pos в Python
- Создание вложенного генератора
- Функция map() и ленивая оценка
- Установка и использование Logzero
- Удаление URL-адресов в Python
- Иерархия классов в Python
- Запрос DELETE с библиотекой requests
- Python Поверхностное Копирование
- Копирование файлов с shutil()
- Добавление цвета в консоли
- Метод is_absolute() для PurePath
- Рациональные числа в Python
- Оператор in и not in в Python
- Управление мышью и клавиатурой с Pyautogui
- Оператор assert в Python
- TypedDict для kwargs в Python 3.12
- Метод title() в Python
- Выражения-генераторы в Python
- Модуль Operator в Python
- Округление дробей в Python
- Обработка ошибки IndexError















