延迟静态类成员初始化

时间:2011-10-25 21:15:57

标签: python initialization static-members

我有这个(示例)代码:

init()

class A:
    foo = bar()

    def __init__(self):
        print(A.foo)

问题是,除非先调用bar(),否则函数init()拒绝工作。对于这个问题,什么是好的Pythonesque解决方案?


在我的特定情况下,init()是第三方,无法进行调整,并且在与A定义的文件不同的文件中调用。

2 个答案:

答案 0 :(得分:0)

喜欢这个吗?

class A:
    foo = None
    def __init__(self):
        if A.foo is None:
             A.foo = bar()
        print(A.foo)

如果您不确定将调用if,还可以将A.__new__()语句移动到A.__init__()(例如,在显式调用其构造函数之前取消对A对象的修改)

答案 1 :(得分:0)

您可以在另一个函数中将调用包装到bar(),以确保已调用init()