延迟静态类成员初始化
我有这个(示例)代码:
init()
class A:
foo = bar()
def __init__(self):
print(A.foo)
问题是,除非首先调用 init()
,否则函数 bar()
拒绝工作。对于这个问题,有什么好的 Python 式解决方案吗?
在我的具体情况下, init()
是第三方的,无法调整,并且在与定义 A
不同的文件中调用。
I have this (example) code:
init()
class A:
foo = bar()
def __init__(self):
print(A.foo)
The problem is, the function bar()
refuses to work unless init()
has been called first. What is a nice Pythonesque solution for this problem?
In my specific situation init()
is third-party and can not be adapted and is called in a different file than A
is defined.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
像这样?
如果您不确定
A.__init__()
是否会被调用(例如,当在显式调用A
对象的构造函数之前解封它)。Like this?
You could also move the
if
statement toA.__new__()
if you are not sureA.__init__()
will be called (e.g. when unpickling anA
object before explicitly calling its constructor).您可以将对
bar()
的调用包装在另一个函数中,这也将确保init()
已被调用。You could wrap the call to
bar()
in another function that will also ensure thatinit()
has been called.