无法在Python子模块中分配给全局变量

时间:2019-05-08 08:16:27

标签: python global-variables python-module

经过25年的Python编程后,我感到困惑。 为什么将此设备(压缩到最低)打印“无”?我希望“ thing.implementation1.Juggernaut对象位于0xblahblahblah”。这是怎么回事?

main.py

import thing
thing.run()

事物/ __ init __。py

from .implementation1 import init
from .implementation1.main import *

事物/实现1 / __ init __。py

foo = None
class Juggernaut:
    pass
def init():
    global foo
    foo = Juggernaut()

事物/实现1 / main.py

from . import init, foo
def run():
    init()
    print(repr(foo))

1 个答案:

答案 0 :(得分:0)

我已经找到了一个可行的解决方案,但仍然不明白它为什么起作用。 将“ init”功能从thing/implementation1/__init__.py移到thing/implementation1/main.py可以解决此问题。

事物/ __ init __。py

from .implementation1.main import *

事物/实现1 / __ init __。py

foo = None
class Juggernaut:
    pass

事物/实现1 / main.py

from . import Juggernaut
def init():
    global foo
    foo = Juggernaut()
def run():
    init()
    print(repr(foo))