Skip to main content
 首页 » 编程设计

python之根据用户输入实例化不同的类

2025年05月04日9sxdcgaq8080

我正在尝试编写可扩展的 Python 代码来实现几种不同的优化算法。我在面向对象编程方面不是很有经验,所以我的问题可能措辞不正确,但我认为我正在努力在我的代码中设置继承和/或多态性。

我希望能够根据用户输入在几种不同的优化算法之间进行选择。我的第一个想法是编写一个 Optimizer 类,它将包含所有公共(public)信息,然后为每个继承 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 文件中的“方法”字段,生成的优化器具有正确的行为。

执行此操作的最佳方法是什么,这样我在添加新方法时就不必回去重写一堆 switch 语句?

谢谢!

请您参考如下方法:

我有 article正是针对这个主题。

简而言之,您最好预先声明用户输入如何映射到类中。为此,您可以使用:

  • 显式映射
  • 动态类名生成
  • 注册表和类装饰器
  • 自定义元类
  • 初始化子类钩子(Hook)

有关详细信息,请阅读我在上面提到的文章。