如果两个模块相互导入会发生什么?
为了概括这个问题,Python中的循环导入怎么样?
使用 Python 的 isinstance 方法时,定义两个类(两个单独的文件中的基类“ClassA”和子类“ClassB”)会产生意外结果。输出似乎受到运行时使用的模块名称(命名空间?)的影响(__main__)。此行为出现在 Python 3.8.5 和 3.10.4 上。
文件 ClassA.py 包含:
class ClassA:
def __init__(self, id):
self.id = id
def __str__(self) -> str:
class_name = type(self).__name__
return f"{class_name} WITH id: {self.id}"
def main():
from ClassB import ClassB
id = 42
for i, instance in enumerate([ClassA(id), ClassB(id)]):
label = f"{type(instance).__name__}:"
print("#" * 50)
print(f"{label} type: {type(instance)}")
label = " " * len(label) # Convert label to appropriate number of spaces
is_a = isinstance(instance, ClassA)
is_b = isinstance(instance, ClassB)
print(f"{label} …Run Code Online (Sandbox Code Playgroud)