1

当我看到以下代码时,我在神话般的python-chess库的源代码中徘徊:

def _reset_board(self):
    # code...

def reset_board(self):
    self._reset_board()

reset_board()函数只做一件事,调用它的私有对应物。这背后有什么原因吗?由于python不必解析名称,将代码直接放在私有函数中会更快_reset_board()吗?

4

2 回答 2

6

_reset_board存在,因此可以从reset_board和调用它__init____init__can't call self.reset_board,因为该方法在子类中被覆盖,并且__init__希望_reset_board从其自己的类中调用特定的实现。(子类reset_board实现可能依赖于尚未发生的初始化,以及其他问题。)

于 2018-02-14T16:10:05.820 回答
0

我同意你的看法,这里_reset_board没有必要。作者可能在reset_board之前的方法中做了一些包装/清理,将其删除,并没有花时间将_reset_board. 或者,也许他计划将来在那里添加一些包装/清洁。

有些项目也可能会根据代码自动生成文档,并且可能会跳过以 开头的函数/方法_,并且他可能不想发布该函数的任何文档,但作为开源,这可能不是真正的原因。

于 2018-02-14T16:04:50.913 回答