Курс Python → Оптимизация памяти с slots
Атрибут slots в Python позволяет явно объявлять элементы данных (например, свойства) и запрещать создание словаря dict и weakref (если явно не объявлено в slots или не доступно в родительском элементе). Наличие магического атрибута slots делает несколько вещей. Во-первых, он ограничивает допустимый набор имен атрибутов объекта только перечисленными именами. Во-вторых, поскольку атрибуты теперь фиксированы, больше нет необходимости хранить атрибуты в словаре экземпляра, поэтому атрибут dict удаляется (если только базовый класс уже не имеет его; он также может быть добавлен обратно подклассом, который не имеет slots).
При использовании атрибута slots атрибуты хранятся в заранее определенных местах в массиве. Это позволяет экономить память и ускоряет доступ к атрибутам объекта. Кроме того, использование slots может помочь избежать опечаток в именах атрибутов, так как только объявленные имена будут доступны.
Для объявления атрибута slots в классе необходимо просто добавить атрибут slots со списком имен атрибутов, которые должны быть доступны. Например:
class MyClass:
__slots__ = ['attribute1', 'attribute2']
В данном примере класс MyClass имеет только два атрибута, attribute1 и attribute2, которые будут доступны для объектов этого класса. При попытке обратиться к другим атрибутам будет вызвано исключение.
Другие уроки курса "Python"
- Сравнение def и lambda функций в Python
- Работа с модулем random
- Конкатенация строк с помощью join()
- Конкатенация строк с методом join()
- Codecademy в Telegram
- Декораторы с @wraps
- Вывод букв строки в Python
- Разделение строк в Python
- Тип данных TypeVarTuple
- Удаление ресурса в Python
- Метод rsub для пользовательских чисел
- Идентификатор объекта в Python
- Метод count в Python: почему count(», ») возвращает 4?
- Лямбда-функции в Python
- Метод rrshift для пользовательских объектов
- Работа с парами ключ-значение
- Библиотека sh: удобные команды терминала
- Библиотека itertools: объединение списков
- Работа с пакетами
- Умножение строк и списков
- Метод remove() для удаления элемента из списка
- Создание копии списка в Python
- Измерение времени выполнения кода
- Сортировка с помощью key
- Генераторы в Python
- Цикл for в Python
- Управление импортом в Python
- Форматирование чисел в Python
- Вложенные генераторы в Python
- Аннотации типов в Python
- Применение функции к каждому элементу списка
- Форматирование заголовков в Python
- Работа с комплексными числами
- Настройка шрифта и цвета в Tkinter
- Многопоточность в Python
- Изменение элемента списка
- Хеширование паролей с использованием salt
- Сохранение и загрузка модели в PyTorch
- Работа с файлами в Python
- Проверка переменных окружения в Python
- Pretty-printing JSON в Python
- Особенности запятых в Python
- Оператор обр. импликации
- Преобразование вложенного списка
- Метод get() в Python
- Использование метода lower()
- Генераторные функции в Python















