Курс Python → Оптимизация памяти с slots
Атрибут slots в Python позволяет явно объявлять элементы данных (например, свойства) и запрещать создание словаря dict и weakref (если явно не объявлено в slots или не доступно в родительском элементе). Наличие магического атрибута slots делает несколько вещей. Во-первых, он ограничивает допустимый набор имен атрибутов объекта только перечисленными именами. Во-вторых, поскольку атрибуты теперь фиксированы, больше нет необходимости хранить атрибуты в словаре экземпляра, поэтому атрибут dict удаляется (если только базовый класс уже не имеет его; он также может быть добавлен обратно подклассом, который не имеет slots).
При использовании атрибута slots атрибуты хранятся в заранее определенных местах в массиве. Это позволяет экономить память и ускоряет доступ к атрибутам объекта. Кроме того, использование slots может помочь избежать опечаток в именах атрибутов, так как только объявленные имена будут доступны.
Для объявления атрибута slots в классе необходимо просто добавить атрибут slots со списком имен атрибутов, которые должны быть доступны. Например:
class MyClass:
__slots__ = ['attribute1', 'attribute2']
В данном примере класс MyClass имеет только два атрибута, attribute1 и attribute2, которые будут доступны для объектов этого класса. При попытке обратиться к другим атрибутам будет вызвано исключение.
Другие уроки курса "Python"
- Генераторы списков
- Проблема сравнения словарей
- Вычисление логарифмов в Python
- Управление фоновыми задачами в Python
- Разделение строки на подстроки в Python
- Создание уникального множества
- Создание инструмента обнаружения плагиата
- Профилирование кода
- Создание спинбокса в tkinter
- Функции в Python
- Создание словарей в Python
- Python itertools combinations() — группировка элементов
- Нахождение самого длинного слова в списке с помощью max
- Оператор деления для класса Rational
- Удаление файлов в Python
- Метод __call__ в Python
- %pinfo: получение информации об объекте
- Именование столбцов в Python с pandas
- Введение в PyTorch
- Импорт и использование модулей в Python
- Работа с датой и временем в Python
- Транспонирование 2D-массива с помощью zip
- Python: Фильтрация списков с помощью filter()
- Работа со словарями в Python
- Namedtuple в Python
- Pretty-printing JSON в Python
- Объединение коллекций в Python
- Вычисление фазы комплексного числа
- Объединение словарей в Python
- Циклы for в Python
- Основные методы NumPy
- Работа со строками в Python
- Переменные в Python
- Управление экспортом элементов
- Преобразование чисел в Python
- Функция count() в Python
- Расчет времени выполнения программы
- Работа с Requests для HTTP-запросов
- Метод __ilshift__ для битового сдвига влево
- Подсчет частотности элементов в Python
- Функции классификации комплексных чисел
- Конвертация коллекций в Python.
- Эффективная конкатенация строк с использованием join()
- Автоматизация скриптов на AWS Lightsail.
- Метод rlshift для битового сдвига















