Зачем вызывать только частную функцию в публичной функции?

Я бродил по исходному коду потрясающей библиотеки 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, Или, может быть, он планирует добавить немного упаковки / очистки в будущем.

Некоторые проекты также могут генерировать Документацию автоматически на основе кода и могут пропускать функции / методы, которые начинаются с _и он может не захотеть публиковать какую-либо документацию для этой функции, но, будучи открытым исходным кодом, это, вероятно, не настоящая причина.

Другие вопросы по тегам