在工厂方法中返回什么?

时间:2012-09-08 17:23:48

标签: python oop class factory-pattern named-constructor

我有一个类Node,我希望它有多个构造函数。

我正在网上阅读关于工厂方法的文章,显然,它是实施构造函数的最干净的Pythonic方法。到目前为止,我的课程如下:

class Node(object):
  element = None
  left = None
  right = None

  def __init__(self, element):
    self.element = element

  @classmethod
  def tree(cos, element, left, right):
    self.element = element
    self.left = left
    self.right = right
    # return here

虽然我应该回到这里?我在网上看到的所有例子只有一个作业,他们会返回那个作业。我有三个任务。什么适合回到这里?

1 个答案:

答案 0 :(得分:1)

在命名构造函数(工厂方法)中,您应该创建一个要返回的对象。 E.g。

class Node(object):
    def __init__(self, element):
        self.element = element
        self.left = self.right = None

    @classmethod
    def tree(cls, element, left, right):
        node = cls(element)
        node.left = left
        node.right = right
        return node

请注意,您不需要类成员,并且具有与实例成员同名的类成员是个坏主意。