循环相关导入模块中的变量范围

2024-04-20 13:40:36 发布

您现在位置:Python中文网/ 问答频道 /正文

这个问题是为了理解当导入的模块循环相关时变量(类变量)的范围

main_uuy.py

import a_

class MyClass:
    my_list = ["hello"]

    @classmethod
    def append_my_list(cls, item):
        if item not in cls.my_list:
            cls.my_list.append(item)

if __name__ == "__main__":
    m_obj = MyClass()
    t_obj = a_.Test()
    t_obj.incr_class()
    print(MyClass.my_list)

a_uupy

class Test:
    def incr_class(self):
        from main_ import MyClass
        MyClass.append_my_list("hey")

我的预期输出是:['hello', 'hey']

程序返回:['hello']

当我调试它时,它实际上会附加值'hey',但是当控件返回到main.py文件时,我的_列表被设置回['hello']

我知道这是一种不合适的Python编码方式,但我想从理论上理解类在循环依赖时发生了什么

如有任何澄清/解释,将不胜感激。谢谢


Tags: pyimportobjhelloifmainmydef