【问题标题】:What to return in Factory Methods?在工厂方法中返回什么?
【发布时间】:2012-09-08 17:23:47
【问题描述】:

我有一个类 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

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

【问题讨论】:

  • 您的代码不起作用。

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


【解决方案1】:

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

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

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

【讨论】:

  • 最后你还需要return node吗?
  • @JoranBeasley:哎呀,忘记回答问题中最重要的部分了 :)
  • @larsmans 为什么我不需要班级成员?仅仅是因为它们是多余的吗?
  • @Darksky:你认为你为什么需要它们?
  • 只是定义它们。我想它是多余的,所以没用。对不起,我来自 C 语言背景,刚刚学习 Python,所以我习惯于“定义”一切。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-18
  • 2016-10-09
  • 2012-06-22
  • 1970-01-01
  • 1970-01-01
  • 2010-09-09
相关资源
最近更新 更多