在Python中,使用一个类返回基于_init__;()的不同对象?
我必须处理两种格式,比如A和B。我想构建一个类,以Python中最好的方式处理这两种格式 我的想法是创建一个类,该类基于在init()上传递的内容返回一个负责处理该格式的不同对象。这样,我的用户只需要处理一个类在Python中,使用一个类返回基于_init__;()的不同对象?,python,design-patterns,Python,Design Patterns,我必须处理两种格式,比如A和B。我想构建一个类,以Python中最好的方式处理这两种格式 我的想法是创建一个类,该类基于在init()上传递的内容返回一个负责处理该格式的不同对象。这样,我的用户只需要处理一个类 class AnnotationHelper: def __init__(self, format): if format == "A": #return object AnnotationHelperA
class AnnotationHelper:
def __init__(self, format):
if format == "A":
#return object AnnotationHelperA
elif format == "B":
#return object AnnotationHelperB
else raise ValueError("Invalid format")
def get_x():
raise NotImplementedError() //AnnotationHelperA and AnnotationHelperB should implement this
这样的“设计模式”叫什么?这是解决我的问题的有效方法,还是有其他标准的方法来做类似的事情?我只是希望我的代码尽可能的干净和可重用。这似乎是
\uuuu new\uuuu
比\uuuu init\uuuuu
更好的工作。谢谢。你能详细说明一下吗?这是一种标准的做事方式吗?还有,像这样的“模式”会被称为什么,这样我才能更深入地研究它。这与模式无关。这是Python创建对象的方式:\uuuuu new\uuuuuu(cls)
创建对象并\uuuuuuu init\uuuuuuuu(self)
初始化它。因此,如果你想得到一个不同于你调用的类的对象,你必须在它里面实现\uuuuuuuuuuuuuuuuuuuuuu
,\uuuuuuuuuuuuuuuuuuuu init\uuuuuuuuuuuuuuuuuuuuuuuuu
不能返回任何东西。这似乎是\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。你能详细说明一下吗?这是一种标准的做事方式吗?还有,像这样的“模式”会被称为什么,这样我才能更深入地研究它。这与模式无关。这是Python创建对象的方式:\uuuuu new\uuuuuu(cls)
创建对象并\uuuuuuu init\uuuuuuuu(self)
初始化它。因此,如果您希望获得与调用的类不同的对象,则必须在其中实现\uuuu new\uuuu
,\uuu init\uuuu
不能返回任何内容。