使用检查模块获取继承对象的名称

时间:2019-06-21 16:17:28

标签: python class oop object operating-system

我想查看一个文件并获取类的名称,并检查“ Runconfig”名称是否被继承。因此,如果文件具有

class some_function(RunConfig):

我想返回true。 我的代码现在看起来像这样:

for file in list_of_files:
   if file in ['some_file.py']:
       for name,obj in inspect.getmembers(file):
          if inspect.isclass(obj):
             print("NAME",name,"obj",obj)

这将返回对象,但是我看不到任何显示“ RunConfig”的内容。 我在这里想念什么? 提前非常感谢您!

1 个答案:

答案 0 :(得分:1)

您可以执行以下操作:

import importlib
import inspect

def is_class_inherited_in_file(file_name, class_ref):
    module = importlib.import_module(file_name.split('.')[0])
    module_members = inspect.getmembers(module)
    for member in module_members:
        if type(member[1]) == type and issubclass(member[1], class_ref):
            return True
    return False

>>> is_class_inherited_in_file('some_file.py', RunConfig)
True

假设: 文件名在工作目录中。如果要从任何目录导入,请执行以下操作:How to import a module given the full path?