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