我知道 Python 处理私有变量/成员/函数/...的方法的大部分来龙去脉。
但是,我无法决定如何区分外部使用的方法或子类使用的方法。
考虑以下示例:
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):
...
在这个例子中,我想明确指出 subscribe 是一个由类/对象的外部用户使用的方法,而 event 是一个不应该从外部调用的方法,而应该由子类实现调用。
现在,我认为这两个部分都是公共 API,因此不要使用任何下划线。但是,对于这种特殊情况,例如,外部 API 不使用下划线,可子类化 API 使用一个下划线,私有/内部 API 使用两个下划线会感觉更简洁。但是,这将变得笨拙,因为需要调用内部 API
self._EventMixin__somePrivateMethod()
那么,您的约定是什么,编码方面、文档方面或其他方面?