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')
我的目标是为用户提供动态选择一些 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')