Ниже приведен фрагмент моего кода
class TestClass:
def __init__(self,n1,n2):
self.n1 = n1
self.n2 = n2
self._sum = None # WILL BE COMPUTED LATER ON
@property
def sum(self):
if self._sum is None:
self._sum = self.compute_sum()
return self._sum
def compute_sum(self):
return(self.n1+self.n2)
test_obj = TestClass(5,6)
print(test_obj.sum)
Это просто пример программы, иллюстрирующей проблему, с которой я сталкиваюсь.
У меня есть класс с закрытой переменной _sum, в котором я хотел бы хранить значение двух чисел n1 и n2.
Сумма свойства может использоваться внешним миром (так сказать) для доступа к значению суммы, не имея возможности изменять ее значение. Причина, по которой у меня есть закрытая переменная _sum, заключается в том, что значение вычисляется один раз и сохраняется для последующих выборок.
Просто наличие @property будет вычислять значение каждый раз, когда кто-то пытается получить доступ к значению суммы через экземпляр, и я хотел бы избежать этого
влияние на производительность (имейте в виду, это всего лишь пример, иллюстрирующий реальную проблему, с которой я сталкиваюсь)
Учитывая мое требование иметь возможность суммировать все внешние объекты для использования, но в то же время не вычислять его при каждом вызове, является ли моя реализация разумной, правильной?
Также довольно интересно, что значение _sum вычисляется еще до вызова функции, по крайней мере, моя IDE смогла это сделать, не знаю как.
На скриншоте, показанном ниже, мы находимся в строке 9, и compute_sum () не был вызван, но значение уже вычислено. Как так ?