通过for循环将所有类导入python文件中

时间:2018-12-13 20:34:58

标签: python python-3.x python-import python-importlib

我正在尝试使用for循环导入python文件中定义的类。

让我们说我们具有这样的文件结构:

data
  -- data_sql
         -- __init__.py
         -- sqlFuncs.py
  -- data_web
         -- __init__.py
         -- webFuncs.py

sqlFuncs.py中,我定义了几个类:

class sqlFuncBase:
      blabla
class sqlFuncChild1 (sqlFuncBase):
      blabla
class sqlFuncChild2 (sqlFuncBase):
      blabla

我知道,如果要导入sqlFuncs.py中定义的单个类,可以使用from data.data_sql.sqlFuncs import sqlFuncBase as sqlBase

现在,我要导入sqlFuncs.py中的所有已定义类。我设法通过

获取了sqlFuncs.py中定义的所有类
    import data.data_sql.sqlFuncs
    mycls_lst = []
    for mcls in inspect.getmembers(data.data_sql.sqlFuncs, inspect.isclass) :
        if mcls[1].__module__ and mcls[1].__module__ == 'data.data_sql.sqlFuncs' :
            mycls_lst.append(mcls[1])

之后,mycls_lst是类型为abc.ABCMeta的类的列表,并且如果您通过mycls_lst[0].__name__检查这些元素,则实际上是该类名称的字符串:'sqlFuncBase'(注意:此字符串中没有软件包前缀'data.data_sql.sqlFuncs')。 但是,如果我想循环显示此列表,以通过以下方式导入每个类:

for mcls in mycls_lst :
    from data.data_sqlFuncs import mcls as curr_cls
        # do something of this imported class

我会得到错误: ModuleNotFoundError: No module named 'mcls'

所以,我的问题是如何在python文件中循环导入所有自定义类?

谢谢!

0 个答案:

没有答案