我有这样的(例子)代码:类时滞静态类成员初始化
init()
class A:
foo = bar()
def __init__(self):
print(A.foo)
的问题是,该功能bar()
拒绝工作,除非init()
已经首先被调用。什么是一个很好的pythonesque解决方案这个问题?
在我的具体情况init()
是第三方,不能进行调整,被称为在不同的文件比A
定义。
我有这样的(例子)代码:类时滞静态类成员初始化
init()
class A:
foo = bar()
def __init__(self):
print(A.foo)
的问题是,该功能bar()
拒绝工作,除非init()
已经首先被调用。什么是一个很好的pythonesque解决方案这个问题?
在我的具体情况init()
是第三方,不能进行调整,被称为在不同的文件比A
定义。
喜欢这个?
class A:
foo = None
def __init__(self):
if A.foo is None:
A.foo = bar()
print(A.foo)
你也可以移动的if
声明A.__new__()
如果你不知道A.__init__()
将被调用(如显式调用构造函数之前取储存的A
对象时)。
顺便说一句,如果你需要,直到'A'初始化延迟初始化,然后'foo'是不是真的静态的,而是一个单身。 –
foo真的有必要成为一个类属性吗?我怀疑你最好重新设计这部分设计。 –
那么,这个类是一个'Character',静态属性是'Character.sprite'。这是所有'Character'实例中的一个常见事物,并且密切相关,因此静态成员属性看起来最好。我使用的库在库初始化之前无法从文件加载精灵。 – orlp