为什么只在公共函数中调用私有函数?

时间:2018-02-14 15:58:47

标签: python function private-methods python-chess

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

def _reset_board(self):
    # code...

def reset_board(self):
    self._reset_board()

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

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:0)

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

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