Я знаю большинство входов и выходов подхода Python к закрытым переменным / members / functions /...
Однако я не могу решить, как различать методы для внешнего использования или для использования подклассов.
Рассмотрим следующий пример:
class EventMixin(object):
def subscribe(self, **kwargs):
'''kwargs should be a dict of event -> callable, to be specialized in the subclass'''
def event(self, name, *args, **kwargs):
...
def _somePrivateMethod(self):
...
В этом примере я хочу прояснить, что подписка - это метод, который будет использоваться внешними пользователями класса / объекта, в то время как событие - это метод, который должен вызываться не извне, а реализациями подкласса.
Сейчас я рассматриваю обе части общедоступного API, поэтому не использую подчеркивания. Однако для этой конкретной ситуации было бы удобнее, например, не использовать подчеркивания для внешнего API, одно подчеркивание для подклассифицированного API и два подчеркивания для частного / внутреннего API. Однако это станет громоздким, потому что тогда внутренний API должен быть вызван как
self._EventMixin__somePrivateMethod()
Итак, каковы ваши соглашения, кодирование, документирование или иное?