更多pythonic方式来“连接”两个对象

时间:2012-05-03 10:22:59

标签: python oop

In a blog post analyzing Python PDF librariesS.Lott发表以下评论:

这是编程非常糟糕的一个例子:

#Connect the parser and document objects.    
parser.set_document(doc)    
doc.set_parser(parser)

只需要这两个中的一个;另一个是作为setter方法的一部分处理的。

通过setter方法执行此操作的Pythonic方法是什么?

2 个答案:

答案 0 :(得分:2)

我猜作者的意思是:

class Parser(object):
  def set_document(self, doc):
    self.doc = doc
    doc.parser = self

其他二传手set_parser()可以说是多余的。

答案 1 :(得分:2)

class Parser(object):
    def set_document(self, doc):
        doc.set_parser(self)
        # whatever

虽然在实践中,我会重新设计文档和解析器类以避免循环引用。除非使用弱引用,否则它们不仅会增加概念复杂性,还会干扰垃圾收集。