[英]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.py
, OperationSkeleton
是从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.