我有一个字符串列表,这些字符串都是导入的模块(我先前解析了__init__.py
文件以进行其他验证)。例如mods = ['mod_one', 'mod_two', 'mod_three']
。我现在需要验证所有这些都是预定义超类( skeleton.py )的实例 - 比如
for x in mods:
if not isinstance(x.Operation,skeleton.OperationSkeleton):
print("error with: "+x)`
我的问题是x在这种情况下是一个字符串 - 显然,但是我要检查的导入模块的名称。该字符串没有Operation
..
奇怪的是......出于测试目的,我试图
print(isinstance(mod_one.Operation,skeleton.OperationSkeleton))
并打印False
。
但是在mod_one.py
OperationSkeleton
skeleton
导入class Clustering(ClusteringSkeleton):
并创建了{{1}}。
答案 0 :(得分:1)
如果您的模块已导入,则可以通过sys.modules
mapping:
import sys
for x in mods:
mod = sys.modules[x]
if not issubclass(mod.Operation, skeleton.OperationSkeleton):
您需要在此使用issubclass()
,因为Operation
不是实例。