我想在该类中计算一个值,该值对于该类的所有实例均保持不变,并且仅计算一次
class A:
a = calculate_a()
def calculate_a():
return 5
首先,我应该为calculate_a()
中的a = calculate_a()
设置什么参考?
self.calculate_a()
和A.calculate_a()
都不正确(未解析的参考)
我需要的是,在创建第二个实例时,不会再次调用calculate_a()
。
instance1 = A() -> calls calculate_a() to set value for a;
instance2 = A() -> uses the value of a calculated above without calling calculate_a
答案 0 :(得分:0)
类成员仅初始化一次-在创建实例之前(没有实例)进行初始化。
您可以自己测试:
def calculate_a():
print("Calculated")
return 5
class A:
a = calculate_a()
执行此操作将打印一次'Calculated'
,即使没有创建任何实例也是如此。
def calculate_a():
print("Calculated")
return 5
class A:
a = calculate_a()
input("Order?")
k = A()
i = A()
c = A()
仅执行一次此打印的'Calculated'
-在要求输入'Order?'
之前,它只执行一次-在输入程序后,不再输出任何输出。
更多信息:
您可以将“ init”方法放入holder类中,以避免污染global():
class A_base:
@staticmethod
def calculate_a():
print("Calculated")
return 5
class A:
a = A_base.calculate_a()