Курс 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. Просмотр файла в Jupyter Noteboo
  2. Добавление кнопки в tkinter
  3. Метод rsub в Python: расширение функциональности вычитания
  4. Декоратор total_ordering для сравнения объектов
  5. Переопределение метода __floordiv__
  6. Мощь вложенных функций в Python
  7. Работа с модулем bisect
  8. Разработка игры Pong с turtle
  9. Секреты Python
  10. Работа с массивами в Numpy
  11. Работа с аргументами командной строки
  12. Работа с географическими данными.
  13. Создание файла с проверкой ошибки
  14. Генерация строк с .join()
  15. Обработка ошибок в JSON данных
  16. Проблемы с dict в Python
  17. Создание и удаление объектов
  18. Работа со строками в Python
  19. Присвоение значений переменным в Python
  20. Обратный список чисел
  21. Метод append() для списка
  22. Метод add для класса Vector
  23. Сравнение def и lambda в Python
  24. Уникальность ключей в словаре
  25. Поиск шаблона в начале строки
  26. Тест скорости набора текста на Python
  27. Синхронизация потоков с time.sleep()
  28. Установка и использование pyshorteners
  29. Красивый вывод списка
  30. Преобразование чисел в Python
  31. Переменная с нижним подчеркиванием
  32. Управление мышью и клавиатурой с Pyautogui
  33. Динамическая типизация в Python
  34. Введение в Python
  35. Декораторы в Python
  36. TON Smart Challenge #2: участие и подготовка
  37. Объединение списков в Python
  38. Удаление файлов в Python
  39. Декоратор проверки активности
  40. Конкатенация строк с методом join()
  41. Сложение матриц в NumPy
  42. Поиск email
  43. Обезопасьте ввод данных
  44. Отображение графиков в Jupyter с Matplotlib
  45. Работа с датой и временем в Python
  46. Удаление ссылок в Python

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