对于我的一生,我发现我的 python 过渡非常令人沮丧。我正在尝试做的一件事是从配置字典中初始化一个类的单个实例,然后在其他模块中访问该类。
我面临的问题/我采取的方法没有解决,我希望有人可以引导正确的“pythonic”方法。
首先,我的应用程序可以作为一个 twistd 插件的一部分进行初始化,也可以作为一个独立的脚本进行初始化。
import resource
class App(object):
_config = None
_someotherobject = None
def __init__(self, config):
self._config = config
....
def main():
global myapp
myapp = App({}) # Could use help here, how to pass config to it
myapp = None #Global doesnt work as I expect, it doesnt modify this instance, stays as None
if __name__ == '__main__':
main()
#-----------resource.py
class Foo(object):
def foo(self):
app.myapp.somefunction() #NoneType object has no attribute
我已经验证了 app 对象是在另一个模块中的代码启动之前创建的。我只是无法弄清楚为什么模块中的“全局”实例实际上并没有达到我的预期,也对如何从另一个模块引用该实例感到困惑。
----- 编辑 ------ 为了澄清几点,调用脚本时python app.py
app.py 引用了一个名为的模块,该模块resources.py
是一堆类定义。在某些类中,当执行时,它们引用 app.myapp 的“单例”实例。