我想查看一个文件并获取类的名称,并检查“ 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”的内容。 我在这里想念什么? 提前非常感谢您!
答案 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?