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

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

Определяя атрибут __slots__ в классе, мы указываем, какие атрибуты будут доступны для экземпляров этого класса. Это делает класс более легким и эффективным в использовании, особенно при создании большого количества экземпляров.

Пример использования __slots__:


class MyClass:
    __slots__ = ('attr1', 'attr2')

    def __init__(self, attr1, attr2):
        self.attr1 = attr1
        self.attr2 = attr2

obj1 = MyClass(10, 20)
print(obj1.attr1)
print(obj1.attr2)

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

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

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

Автор урока

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

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

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

  1. Подсчет элементов с помощью Counter
  2. Добавление элементов в список: append() vs extend()
  3. Структурирование именованных констант
  4. Присвоение и ссылки
  5. Функции map, filter и reduce
  6. Работа с исключениями в Python
  7. Проверка класса объекта
  8. Встраивание HTML в Jupyter Notebook
  9. Принципы программирования
  10. Очистка данных с Pandas
  11. Удаление знаков препинания в Python
  12. %pinfo: получение информации об объекте
  13. Преобразование чисел в восьмеричную строку
  14. Запрос пароля с помощью getpass
  15. Печать календаря в Python
  16. Профилирование с cProfile
  17. Хеширование паролей с использованием salt
  18. Изучение объектов с помощью dir()
  19. Освоение Python
  20. Разработка Telegram-ботов
  21. Утечки переменных цикла в Python 3.x
  22. Функция rsplit() в Python
  23. Сериализация и десериализация объектов
  24. Определение относительного пути
  25. Форматирование вывода списков
  26. Управление мышью и клавиатурой с Pyautogui
  27. Работа с IP-адресами в Python
  28. Проверка дублей в списке.
  29. Умножение строк и списков
  30. Вывод баннеров
  31. Установка и использование Python-dateutil
  32. Замеры производительности в Python
  33. Python Метод sleep() из time
  34. Методы в Python
  35. Зарезервированные слова в Python
  36. Парсинг веб-страниц с Beautiful Soup
  37. Работа с файлами в Python
  38. Установка random seed в Python
  39. Переопределение метода __eq__
  40. Просмотр файла в Jupyter Noteboo
  41. Подсчет часто встречающихся элементов
  42. Удаление ключа из словаря в Python
  43. Нахождение отличий в списках
  44. Объединение списков в строку

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