Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中,使用一个类返回基于_init__;()的不同对象?_Python_Design Patterns - Fatal编程技术网

在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

我必须处理两种格式,比如A和B。我想构建一个类,以Python中最好的方式处理这两种格式

我的想法是创建一个类,该类基于在init()上传递的内容返回一个负责处理该格式的不同对象。这样,我的用户只需要处理一个类

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
不能返回任何内容。