当我看到以下代码时,我在神话般的python-chess库的源代码中徘徊:
def _reset_board(self):
# code...
def reset_board(self):
self._reset_board()
该reset_board()
函数只做一件事,调用它的私有对应物。这背后有什么原因吗?由于python不必解析名称,将代码直接放在私有函数中会更快_reset_board()
吗?
当我看到以下代码时,我在神话般的python-chess库的源代码中徘徊:
def _reset_board(self):
# code...
def reset_board(self):
self._reset_board()
该reset_board()
函数只做一件事,调用它的私有对应物。这背后有什么原因吗?由于python不必解析名称,将代码直接放在私有函数中会更快_reset_board()
吗?
_reset_board
存在,因此可以从reset_board
和调用它__init__
。__init__
can't call self.reset_board
,因为该方法在子类中被覆盖,并且__init__
希望_reset_board
从其自己的类中调用特定的实现。(子类reset_board
实现可能依赖于尚未发生的初始化,以及其他问题。)
我同意你的看法,这里_reset_board
没有必要。作者可能在reset_board
之前的方法中做了一些包装/清理,将其删除,并没有花时间将_reset_board
. 或者,也许他计划将来在那里添加一些包装/清洁。
有些项目也可能会根据代码自动生成文档,并且可能会跳过以 开头的函数/方法_
,并且他可能不想发布该函数的任何文档,但作为开源,这可能不是真正的原因。