这个问题是要了解导入的模块是循环依赖的时变量(类变量)的范围。
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)
class Test:
def incr_class(self):
from main_ import MyClass
MyClass.append_my_list("hey")
我的预期输出是:['hello', 'hey']
程序返回:['hello']
当我调试时,它实际上会附加值'hey'
,但是当控件返回到main.py
文件时,my_list会重新设置为['hello']
。
我知道这是不适当的Python编码方式,但希望从理论上理解当类与循环相关时类中发生了什么。
任何澄清/解释将不胜感激。