我的目标是为用户提供动态选择一些strategy
的能力,他可以在命令行中提供python文件。具有适当界面和所有其他OOP内容的(例如:myApp -s /some_path/SomeStrategy.py)策略。
那么,有没有能力实现这个?
答案 0 :(得分:1)
在您与Strategy
课程交互的所有代码中说,但您从未实现过。我认为下面的load
方法可以解决这个问题:
def load(class) :
global Strategy
Strategy = class
这样,您只需将变量Strategy
指向另一个类,因此在所有代码中,Strategy
指的是用户加载的类。
当然,更好的方法是使用Application
类,strategyClass
属性,但同样的想法适用。
如果你想从命令文件加载它,它会变得有点棘手,但从Python的角度来看,这个想法保持不变。
答案 1 :(得分:1)
导入module
。 name参数指定以绝对或相对术语导入的模块
(例如pkg.mod或..mod)。
如果以相对术语指定名称,则必须将package参数设置为包的名称,该包用作解析包名称的锚点
(例如import_module('.. mod','pkg.subpkg')将导入pkg.mod)。
importlib.import_module('os.path')