Курс Python → Оптимизация памяти с slots
Атрибут slots в Python позволяет явно объявлять элементы данных (например, свойства) и запрещать создание словаря dict и weakref (если явно не объявлено в slots или не доступно в родительском элементе). Наличие магического атрибута slots делает несколько вещей. Во-первых, он ограничивает допустимый набор имен атрибутов объекта только перечисленными именами. Во-вторых, поскольку атрибуты теперь фиксированы, больше нет необходимости хранить атрибуты в словаре экземпляра, поэтому атрибут dict удаляется (если только базовый класс уже не имеет его; он также может быть добавлен обратно подклассом, который не имеет slots).
При использовании атрибута slots атрибуты хранятся в заранее определенных местах в массиве. Это позволяет экономить память и ускоряет доступ к атрибутам объекта. Кроме того, использование slots может помочь избежать опечаток в именах атрибутов, так как только объявленные имена будут доступны.
Для объявления атрибута slots в классе необходимо просто добавить атрибут slots со списком имен атрибутов, которые должны быть доступны. Например:
class MyClass:
__slots__ = ['attribute1', 'attribute2']
В данном примере класс MyClass имеет только два атрибута, attribute1 и attribute2, которые будут доступны для объектов этого класса. При попытке обратиться к другим атрибутам будет вызвано исключение.
Другие уроки курса "Python"
- UserList в Python: Описание и примеры использования
- Python Аргументы по умолчанию
- Хеширование паролей с использованием salt
- Метод get для словаря
- Оператор @ для умножения матриц
- Создание панели меню Tkinter
- Копирование в Python
- Импорт с альтернативным именем
- Ошибка NotImplemented в Python
- Замена символов в строке
- Экранирование символов в Python
- Метод enumerate() в Python
- Вложенные генераторы в Python
- Работа с дробями в Python
- Установка переменной среды в Python
- Метод __index__ в Python
- Комплексные числа в Python
- Списки в Python: основы
- Метод split() для разделения строк
- *args и **kwargs в Python
- Работа с модулем cmath
- Изменение элемента списка
- Создание таблиц в Python с PrettyTable
- Форматирование строк в Python
- Функция rsplit() в Python
- Создание списков в Python
- Асинхронный код в Python
- Повторение элементов в Python
- Преобразование строк в числа с плавающей запятой
- Освоение Python
- Работа с Colorama
- Оператор умножения для вектора
- Многострочные комментарии в Python
- Сортировка HTML по CSS-селектору
- Работа с файлами в Python
- Преобразование данных в Python
- Создание словарей с defaultdict()
- Работа с defaultdictами в Python
- Структура данных словарь в Python
- Работа с CSV в Python
- Тестирование функции сложения
- Форматирование строк в Python
- Расширение информации об ошибке в Python
- Работа с URL-адресами в Python
- Поиск индекса элемента
- Получение списка кортежей из словаря















