我正在分析其中包含两个类似init的文件的python代码。名称为__init__solvers.py
和__init__cases.py
,它们包含典型的__init__.py
结构和初始化数据。例如,__init__solvers.py
包含以下内容:
# List of solvers
solvers = ["s1", "s2", "s3"]
# Wrapper for solvers
def Solver(choice, options):
"Return solver instance for given choice"
exec("from %s import Solver as ChosenSolver" % choice)
return ChosenSolver(options)
主模块按如下方式导入求解器和求解器:
from solvers import Solver, solvers
对__init__cases.py
的内容也采取了类似的方法。它是为Python 2.x编写的。目录结构如下:
main/
__init__.py
mainmodule.py
solversandcases/
__init__solvers.py
__init__cases.py
basicsolver.py # where BasicSolver() class is defined
basiccase.py # where BasicCase() class is defined
s1.py # where Solver(BasicSolver) class is defined
c1.py # where Case(BasicCase) class is defined
该代码使用以下命令执行:
python2 mainmodule.py s1 c1
其中s1是求解器的选择,'c1'是要运行的情况的选择。无例外运行并产生预期的输出。我只是不知道这实际上是如何工作的,在官方文档中也没有任何关于将名称附加到__init__.py
文件名中的信息。有人可以解释吗?