Зачем вызывать только частную функцию в публичной функции?
Я бродил по исходному коду потрясающей библиотеки python-chess, когда увидел следующий код:
def _reset_board(self):
# code...
def reset_board(self):
self._reset_board()
reset_board()
Функция делает только одно, вызывает ее частный аналог. Есть ли причина этого? Не будет ли помещение кода непосредственно в приватную функцию быстрее, потому что python не должен разрешать имя _reset_board()
?
2 ответа
_reset_board
существует, так что его можно вызвать как из reset_board
а также __init__
, __init__
не могу позвонить self.reset_board
потому что этот метод переопределен в подклассах, и __init__
хочет назвать конкретный _reset_board
реализация из своего собственного класса. (Подкласс reset_board
реализация может зависеть от инициализации, которая еще не произошла, среди других проблем.)
Я согласен с вами, вот это _reset_board
не обязательно. Автор, вероятно, сделал некоторые упаковки / очистки в reset_board
метод, удалил его, и не занял время, чтобы удалить _reset_board
, Или, может быть, он планирует добавить немного упаковки / очистки в будущем.
Некоторые проекты также могут генерировать Документацию автоматически на основе кода и могут пропускать функции / методы, которые начинаются с _
и он может не захотеть публиковать какую-либо документацию для этой функции, но, будучи открытым исходным кодом, это, вероятно, не настоящая причина.