我有一个类,其中共享变量self.a是在需要大量时间的非常繁重的计算之后获得的:
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
。
以下是我的问题:如果我调用这两个函数,demanding_function()
执行多次还是只执行一次?
注意:这是一个通用示例,变量没有任何特定含义
答案 0 :(得分:2)
当初始化类实例时,即在调用类的__init__
时,只调用一次该函数。每次访问self.a
时,都会使用已分配的值;所以不用担心。
答案 1 :(得分:2)
__init__
仅被调用一次。使用该实例化对象的任何后续方法调用都将使用已实例化的实例变量值