Чтение this question on method ordering, я подумал о том, где разместить защищенные методы и должны ли они быть приватными _method(self)
или public method(self)
в Python. Я знаю, что Python не предоставляет языковой функции для защищенных методов.Как представить защищенные методы в классах Python?
Private: По соглашению, атрибуты, начинающиеся с подчеркивания являются частными. Их обычно можно получить извне, но не следует. Запуск защищенных методов с подчеркиванием кажется странным, поскольку неясно, что подкласс фактически переопределяет метод, а не декларирует его собственную деталь реализации.
Публикация: Без подчеркивания более вероятно, что кто-то взглянет на базовый класс, чтобы узнать, существует ли этот метод. Таким образом, это лучше для людей, которые являются подклассами. Тем не менее, люди, которые хотят использовать подкласс, не знают, что этот метод является только деталью реализации и может попытаться вызвать его извне.
Каков предпочтительный способ определения защищенных методов в Python?
Также см. [Почему «частные» методы Python не являются частными?] (Http://stackoverflow.com/questions/70528/why-are-pythons-private-methods-not-actually-private) Как сказал Гвидо : «Мы все соглашаем взрослых здесь». –