У меня есть следующий код.Метод вызова класса дважды
class DobleTSim():
def __init__(self, bf, hw, tf, tw):
self.bf = bf
self.hw = hw
self.tf = tf
self.tw = tw
def m_in_maj(self):
print('foo')
return 2 * (self.bf * self.tf * (self.tf/2 + self.hw/2))
def m_est_maj(self):
return self.m_in_maj()/((self.hw + 2 * self.tf)/2)
A = DobleTSim(200, 500, 12, 12)
print(A.m_in_maj(), A.m_est_maj())
Когда я выполнить код, выход:
foo
foo
1228800.0 4690.076335877862
Как я могу избежать выполнения метода "m_in_maj" дважды?
----- EDIT -----
Другим решением может быть использование собственности и lru_cache декоратора. Есть ли недостаток при использовании этого ?.
import functools
class DobleTSim():
def __init__(self, bf, hw, tf, tw):
self.bf = bf
self.hw = hw
self.tf = tf
self.tw = tw
@property
@functools.lru_cache()
def m_in_maj(self):
print('foo')
self.a = 2 * (self.bf * self.tf * (self.tf/2 + self.hw/2))
return self.a
def m_est_maj(self):
return self.m_in_maj/((self.hw + 2 * self.tf)/2)
'm_in_maj()' вызывается в 'm_est_maj () 'function – Kidus
Не называть его в' m_est_maj' –
Да, но мне нужно это значение, чтобы использовать его на m_est_maj. – Eduardo