Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗pyOpPdCd 18 of 174 menu
◀ ▶

Кэширование свойства в ООП в Python

Если свойство считает что-то тяжелое, неудобно выполнять вычисление при каждом чтении. В Python модуль functools дает декоратор cached_property: результат запоминается, и при повторном обращении код свойства уже не выполняется.

Подключим декоратор и сделаем класс Circle с кэшируемой площадью:

from functools import cached_property class Circle: def __init__(self, radius): self.__radius = radius @cached_property def area(self): print('calc') return self.__radius * self.__radius * 3.14

Создадим объект и два раза прочитаем свойство area:

circle = Circle(10) print(circle.area) # выведет 'calc' и площадь print(circle.area) # выведет только площадь

Сделайте класс Employee с зарплатой и свойством, которое один раз считает дорогое значение надбавки к зарплате. Проверьте, что при повторном чтении надбавка не пересчитывается.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить