我试图从具有动态名称的文件中导入一个类.这是我的文件导入程序:
def get_channel_module(app, method):
mod_name = 'channel.%s.%s' % (app, method)
module = __import__(mod_name, globals(), locals(), [method])
return module
Run Code Online (Sandbox Code Playgroud)
这会导入特定的python文件,例如some_file.py,如下所示:
class SomeClassA(BaseClass):
def __init__(self, *args, **kwargs):
return
class SomeClassB():
def __init__(self, *args, **kwargs):
return
Run Code Online (Sandbox Code Playgroud)
我想要做的只是从导入的文件中返回扩展BaseClass的类,所以在这个实例中,SomeClassA.有没有办法做到这一点?
您可以通过检查模块中的符号来执行此操作issubclass:
def get_subclass(module, base_class):
for name in dir(module):
obj = getattr(module, name)
try:
if issubclass(obj, base_class):
return obj
except TypeError: # If 'obj' is not a class
pass
return None
Run Code Online (Sandbox Code Playgroud)