我正在尝试编写一个可扩展的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文件中的“方法”字段具有正确的行为。
这样做的最佳方法是什么,这样我就不必在添加新方法时重新编写一堆开关语句了?
谢谢!
发布于 2018-09-11 18:33:41
https://stackoverflow.com/questions/52282069
复制相似问题