У меня есть класс, где общая переменная self.a получается после очень тяжелых вычислений, который требует много времени:Является ли переменная self вычисляемой несколько раз, если функции вызываются более одного раза в Python?
class MyClass(object):
def __init__(self):
# ----------------------------------
# function computationally demanding
out = demanding_function() # In this example, the output is a list of characters ['A','X','R','N','L']
# ----------------------------------
self.a = out
def fun1(self, string):
out = []
for letter in self.a:
out.append(string+letter)
return out
def fun2(self, number):
out = []
for letter in self.a:
out.append(str(number)+letter)
return out
o = MyClass()
x = o.fun1('Hello ')
y = o.fun2(2)
Как вы можете видеть, self.a
используется функциями fun1
и fun2
. Вот мой вопрос: если я называю эти 2 функции, выполняется ли demanding_function()
несколько раз или только один раз?
Примечание: это общий пример и переменные не имеют какого-либо конкретного значения
Нет. Скажем, 'requireing_function()' возвращает 1. 'out == 1' и, следовательно,' self.a == 1'. С этого момента всякий раз, когда вы используете свои методы в экземпляре, он просто использует значение, хранящееся в 'self.a', которое равно 1. Если вы не инициализируете экземпляр, метод' __init__' никогда не выполняется. – spicypumpkin