假设我有一个抽象基类和一个也是抽象的子类:
class Daemon(object)::
__metaclass__ = abc.ABCMeta
def __init__(self, pid_file):
...
@abc.abstractmethod
def run(self):
return
class Worker(Daemon):
__metaclass__ = abc.ABCMeta
def __init__(self):
...
def run(self):
# do stuff
self.process()
@abc.abstractmethod
def process(self):
"""
Override this method when subclassing Worker.
"""
return
当其他开发人员构建新的实际“工作” Worker 子类时,我想明确表示他们不应该弄乱 run 方法。如果我使用__run
它暗示该方法是私有的,但是我正在创建一个私有抽象方法Daemon
,这有点令人困惑。使用它来保护它似乎也很奇怪,_run
因为我不希望 Worker 子类弄乱它。我意识到私有和受保护的名称只是 Python 中的有用约定,我只想让其他人清楚如何构建新的 Worker 子类。
在这种情况下是否有 Pythonic 约定?或者这只是使文档清晰的问题?