给定以下两个 .py 文件:
类.py
class A(object):
pass
主文件
def importer(klass):
"""
Used to import classes from there python qalname
"""
import_ = lambda m, k: getattr(__import__(m, fromlist=k), k)
klass = klass.split('.')
module = '.'.join(klass[:-1])
klass = klass[-1]
return import_(module, klass)
from aclass import A
import_A = importer('aclass.A')
print isinstance(A(), import_A) # Expected to be true
print isinstance(import_A(), A) # Expected to be true
在这个阶段,一切正常(我的程序打印True\nTrue
)但是如果我修改importer
方法以强制重新加载,即:
这一行:
import_ = lambda m, k: getattr(__import__(m, fromlist=k), k)
替换为:
import_ = lambda m, k: getattr(reload(__import__(m, fromlist=k)), k)
我的程序返回
False
False
而且我不理解这种行为。