求问 Python 的交叉引用

2019-07-06 01:13:46 +08:00
 pzkpfwiii
# foo1.py
from foo2 import Foo2
class Foo1(Foo2):
foo1 = ""

# foo2.py
class Foo2():
foo2 = ""
def test():
from foo1 import Foo1
a = Foo1()
print(isinstance(a, Foo2))
if __name__ == '__main__':
test()

结果居然是 False,求大佬给个解释
2020 次点击
所在节点    Python
3 条回复
limuyan44
2019-07-06 01:41:13 +08:00
连 python 代码你都不格式化。。。。
hdyuik
2019-07-06 02:14:53 +08:00
foo1.py 的中的 foo2, 改成__main__, 输出就是 True.
至于为什么, 大概是 python 对于 module 的命名问题, foo2 module 会被命名为__main__ module, 因而 foo1 import 的时候并不认为 foo2 已经被导入, 那么 foo2 会被重新导入一次, 第二次的导入的 Foo2 class 和第一次的不一样
sayano
2019-07-06 16:34:12 +08:00
靠 我在 s1 见到了这个帖子

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/580489

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX