0

在一篇分析 Python PDF 库的博文中,S.Lott发表了以下评论:

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

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

只需要这两者之一;另一个作为 setter 方法的一部分被简单处理。

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

4

2 回答 2

2

我猜作者的意思是这样的:

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

另一个 setterset_parser()可以说是多余的。

于 2012-05-03T10:24:40.063 回答
2
class Parser(object):
    def set_document(self, doc):
        doc.set_parser(self)
        # whatever

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

于 2012-05-03T10:25:25.210 回答