Python 从命令行导入

Python import from command line

我的目标是为用户提供动态选择一些 strategy 的能力,他可以在命令行中将其作为 python 文件提供。 (例如:myApp -s /some_path/SomeStrategy.py) 具有适当接口和所有其他 OOP 内容的策略。

那么,有没有能力实现这个?

在你的所有代码中说你与 Strategy class 交互,但你从未实现它。我认为下面的 load 方法应该可以解决问题:

def load(class) :
    global Strategy
    Strategy = class

这样,你只是让变量Strategy指向另一个class,所以在所有代码中,Strategy指的是用户加载的class .

当然,更好的方法是使用 Application class 和 strategyClass 属性,但同样的想法也适用。

如果你想从命令文件加载它,它会变得有点棘手,但从 Python 的角度来看,这个想法保持不变。

导入 module。名称参数以绝对或相对术语指定要导入的模块

(e.g. either pkg.mod or ..mod).

如果以相对术语指定名称,则包参数必须设置为包的名称,作为解析包名称的锚点

(e.g. import_module('..mod', 'pkg.subpkg') will import pkg.mod).

importlib.import_module('os.path')