繁体   English   中英

变量和模块的实例检查

[英]isinstance check of variable and module

我有一个字符串列表,所有字符串都是导入的模块(我之前解析了__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.pyOperationSkeleton是从skeleton导入的,并且创建了class Clustering(ClusteringSkeleton): mod_one.py

如果您的模块已经导入,则可以在sys.modules映射中按其名称访问它们:

import sys

for x in mods:
    mod = sys.modules[x]
    if not issubclass(mod.Operation, skeleton.OperationSkeleton): 

您需要在此处使用issubclass() ,因为Operation不是实例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM