Я пытаюсь использовать цикл 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
a, и если вы проверяете эти элементы, например, с помощью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?
Спасибо !!