Курс Python → Оптимизация памяти с __slots__

Использование атрибута __slots__ в Python может значительно сократить объем памяти, необходимый для каждого экземпляра класса. Вместо использования словаря для хранения атрибутов, Python создает небольшой массив фиксированного размера, что уменьшает накладные расходы на каждый объект. Это особенно полезно при работе с большим количеством экземпляров классов или при ограниченных ресурсах памяти.

Однако, использование атрибута __slots__ имеет свои ограничения. Например, при использовании __slots__ мы не можем динамически добавлять новые атрибуты к экземпляру класса. Все атрибуты должны быть объявлены заранее в списке __slots__. Это ограничение может быть преимуществом, так как предотвращает случайные опечатки при создании новых атрибутов, но может быть недостатком в некоторых случаях.

Кроме того, классы с атрибутом __slots__ не могут использовать множественное наследование. Это означает, что классы, использующие __slots__, могут наследоваться только от одного родительского класса. Для некоторых приложений это может быть ограничивающим фактором, поэтому необходимо внимательно оценить, подходит ли использование __slots__ для конкретного случая.

class MyClass:
    __slots__ = ['attribute1', 'attribute2']

    def __init__(self, value1, value2):
        self.attribute1 = value1
        self.attribute2 = value2

obj = MyClass(10, 20)
print(obj.attribute1, obj.attribute2)  # Вывод: 10 20

Пример выше демонстрирует использование атрибута __slots__ в классе MyClass. Здесь мы объявляем список атрибутов, которые будут доступны для каждого экземпляра класса. При создании экземпляра MyClass мы можем установить значения этих атрибутов и обращаться к ним как к обычным атрибутам объекта.

Твои коллеги будут рады, поделись в

Автор урока

Дмитрий Комаровский
Дмитрий Комаровский

Автоматизация процессов
в КраснодарБанки.ру

Другие уроки курса "Python"

  1. Модуль Operator в Python
  2. Обновление данных через PUT запрос
  3. Декоратор проверки активности
  4. Управление пакетами с pip
  5. Обработка ошибки IndexError
  6. Импортирование в Python
  7. Декоратор total_ordering для класса Point
  8. Создание таблиц в терминале с PrettyTable
  9. Возврат нескольких значений из функции
  10. lru_cache оптимизация функций
  11. Преобразование регистра символов
  12. Объединение словарей в Python
  13. Форматирование строк в Python
  14. Кортеж в Python: создание и использование
  15. Работа с deque в Python
  16. Модуль Antigravity в Python 3
  17. Оператор @ для умножения матриц
  18. Создание пар из последовательностей
  19. Тестирование времени с Freezegun
  20. Объединение строк с помощью метода join
  21. enumerate() в Python для работы с индексами
  22. Переопределение метода
  23. Счетчик в Python: most_common()
  24. Работа с файлами в Python
  25. Создание функций с произвольным количеством аргументов
  26. Создание объекта времени
  27. Проверка вхождения подстроки
  28. Метод Enumerate() для списков
  29. Перемешивание списка с shuffle()
  30. Работа со списками
  31. Разделение строки на подстроки в Python
  32. Назначение максимального и минимального значения переменной в Python.
  33. Частичное совпадение ввода
  34. Простой калькулятор Python
  35. Регулярные выражения в Python
  36. Метод __index__ в Python
  37. Рекурсия для обращения строки
  38. Обход дочерних элементов BeautifulSoup
  39. Инверсия списка и строки в Python
  40. Контроль точности вывода чисел
  41. Типы возвращаемых значений в Python
  42. Сортировка списка по индексам
  43. Генератор надежных паролей

Marketello читают маркетологи из крутых компаний