如何在方法的所有实例之间共享计算变量

2024-09-28 19:05:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在类中计算一个值,该值对于该类的所有实例都保持不变,并且只计算一次

class A:
    a = calculate_a()
    def calculate_a():
        return 5

首先,我应该为a = calculate_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

Tags: theto实例selfforreturnvaluedef
1条回答
网友
1楼 · 发布于 2024-09-28 19:05:02

类成员只初始化一次-它们在创建实例之前被初始化


您可以自己进行测试:

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()

相关问题 更多 >