gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 06:40:42 25 4
gpt4 key购买 nike

我正在尝试编写可扩展的 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)

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

关于python - 根据用户输入实例化不同的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52282069/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com