我正在尝试编写可扩展的python代码以实现几种不同的优化算法。我在面向对象编程方面经验不是很丰富,所以我的问题的措词可能不正确,但是我认为我在代码中设置继承和/或多态性方面感到很挣扎。
我希望能够根据用户输入在几种不同的优化算法之间进行选择。我的第一个倾向是编写一个Optimizer类,该类将保存所有公共信息,然后为每个继承Optimizer类的算法都具有特定的类。即。
class Optimizer:
def __init__(self, user_input):
pass
class Method1(Optimizer):
def__init__(self, user_input):
pass
def run()
pass
class Method2(Optimizer):
def__init__(self, user_input):
pass
def run()
pass
我很快意识到,在初始化优化器之前,您需要知道要使用哪种方法。这不是世界末日,但是在优化器对象的初始化中解析用户输入似乎更干净。我希望能够使用类似以下内容来初始化优化器:
optimizer = Optimizer(user_input)
根据嵌入在user_input文件中的“ method”字段,使生成的优化程序具有正确的行为。
做到这一点的最佳方法是什么,以免在添加新方法时不必重新编写一堆switch语句?
谢谢!
答案 0 :(得分:0)
我有article恰好解决了这个话题。
简而言之,您最好预先声明用户输入如何映射到类中。为此,您可以使用:
有关更多详细信息,请阅读我上面提到的文章。