如果在Python中多次调用函数,是自变量计算多次吗?

时间:2017-02-09 10:28:54

标签: python function class methods self

我有一个类,其中共享变量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.afun1使用fun2。 以下是我的问题:如果我调用这两个函数,demanding_function()执行多次还是只执行一次?

注意:这是一个通用示例,变量没有任何特定含义

2 个答案:

答案 0 :(得分:2)

当初始化类实例时,即在调用类的__init__时,只调用一次该函数。每次访问self.a时,都会使用已分配的值;所以不用担心。

答案 1 :(得分:2)

实例化对象时,

__init__仅被调用一次。使用该实例化对象的任何后续方法调用都将使用已实例化的实例变量值