我正在尝试使用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文件中循环导入所有自定义类?
谢谢!