Курс 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. Оператор in для проверки наличия элемента
  2. Названия столбцов в Python таблицах
  3. Методы shutil для работы с файлами
  4. Преобразование вложенного списка
  5. Изменение регистра данных
  6. Регистрация на TenChat
  7. Парсинг статей с Newspaper3k
  8. Генераторы в Python
  9. Нахождение пересечения множеств
  10. Работа с Colorama
  11. Основы работы со списками
  12. Метод сравнения объектов в Python
  13. Тестирование модели в PyTorch
  14. Роль ключевого слова self
  15. Оператор in для Python
  16. Декоратор @override
  17. Подсчет количества элементов в списке
  18. Переменные класса и экземпляра
  19. Извлечение чисел из текста
  20. Разделение списка на гнппы
  21. Округление дробей в Python
  22. Операторы += в Python
  23. Удаление и повторная вставка ключа в OrderedDict
  24. Транспонирование 2D-массива с помощью zip
  25. Хранение переменных в словаре.
  26. Определение имен функций
  27. Поиск всех индексов подстроки
  28. EMOT преобразование эмодзи в текст
  29. Многострочные комментарии в Python
  30. Работа с файлами в Python
  31. Модуль itertools: эффективная работа с итераторами
  32. Создание Radio кнопок в tkinter
  33. Аргумент по умолчанию
  34. Частичное совпадение ввода
  35. Функция pow() — возвести число в степень
  36. Методы сравнения множеств
  37. Упрощение условных выражений с тернарным оператором
  38. Печать списка с помощью метода join
  39. Объединение списков с помощью zip
  40. Работа с файлами в Python
  41. Вывод букв строки в Python
  42. Передача неизвестных аргументов в Python.
  43. Изменение списка срезами
  44. Переопределение метода __floordiv__
  45. Получение комбинаций в Python
  46. Возврат нескольких значений
  47. Хранение переменных в Python.
  48. Методы classmethod и staticmethod
  49. Преобразование регистра символов

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