我是蟒蛇新手。
我有一个关于访问类中属性的问题
t1.py
#!/usr/bin/python
import t2
class A:
flag = False
if __name__ == "__main__":
t2.f()
print(A.flag)
t2.py
#!/usr/bin/python
import t1
def f():
t1.A.flag = True
print(t1.A.flag)
执行结果:
# ./t1.py
True
False
我希望结果必须是 True, True。
t1.py 中的 A.flag 和 t2.py 中的 t1.A.flag 是否不同?
当执行这段代码时,python 会发生什么?
谢谢。
当你这样做时
./t1.py
你正在执行t1.py
文件,但它没有作为t1
模块。它被认为是__main__
模块。 (这就是那个if __name__ == '__main__'
行检查。)这意味着当这一行:
import t1
in t2.py
尝试导入t1
,Python开始执行t1.py
file again来创建t1
模块。你最终会得到两个版本A
类,一个存在__main__.A
和一个存在t1.A
。修改为t1.A
没有做任何事__main__.A
,因为即使它们来自同一文件中的相同代码,但它们不是同一类。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)