Курс Python → Оптимизация памяти с slots
Атрибут slots в Python позволяет явно объявлять элементы данных (например, свойства) и запрещать создание словаря dict и weakref (если явно не объявлено в slots или не доступно в родительском элементе). Наличие магического атрибута slots делает несколько вещей. Во-первых, он ограничивает допустимый набор имен атрибутов объекта только перечисленными именами. Во-вторых, поскольку атрибуты теперь фиксированы, больше нет необходимости хранить атрибуты в словаре экземпляра, поэтому атрибут dict удаляется (если только базовый класс уже не имеет его; он также может быть добавлен обратно подклассом, который не имеет slots).
При использовании атрибута slots атрибуты хранятся в заранее определенных местах в массиве. Это позволяет экономить память и ускоряет доступ к атрибутам объекта. Кроме того, использование slots может помочь избежать опечаток в именах атрибутов, так как только объявленные имена будут доступны.
Для объявления атрибута slots в классе необходимо просто добавить атрибут slots со списком имен атрибутов, которые должны быть доступны. Например:
class MyClass:
__slots__ = ['attribute1', 'attribute2']
В данном примере класс MyClass имеет только два атрибута, attribute1 и attribute2, которые будут доступны для объектов этого класса. При попытке обратиться к другим атрибутам будет вызвано исключение.
Другие уроки курса "Python"
- Переопределение метода __pow__
- Поиск подстроки в строке
- Добавление цвета в консоли
- Создание словаря в Python
- Объединение строк с помощью метода join
- Метод Self в Python
- Множественное назначение в Python
- Работа с датой и временем в Python
- Поиск кода
- Преобразование строк в числа с плавающей запятой
- Создание словарей и множеств в Python
- Отладка в Python
- Генераторы списков в Python
- Роль запятой в Python
- Преобразование строк в числа в Python
- Работа со словарями
- Использование метода lower()
- Функция enumerate в Python
- Преобразование списков в словарь
- Python groupby() из itertools: работа с повторяющимися элементами
- Определение наиболее частого элемента с помощью collections.Counter
- Работа с NumPy.linalg
- Копирование объектов в Python
- Работа со словарями в Python
- Переопределение метода divmod
- Метод setdefault() в Python
- Проверка переменных окружения в Python
- Оператор «or» в Python
- Основные методы NumPy
- Функциональное программирование в Python
- Python union() функция — объединение множеств
- Закрытие файла в Python
- Colorama: окрашивание текста в Python
- Перегрузка операторов в Python
- Сравнение def и lambda-функций
- Деление в Python
- Создание спинбокса в tkinter
- UserString в Python
- Защита данных в Python
- Работа со словарями с defaultdict из collections
- Руководство по использованию Colorama
- Список и кортеж в Python















