道歉–标题比当前的问题更为浮夸(我不好称呼)。我有一个类A,及其派生类B。“ A”通过以下形式的代码为其派生类提供了一个通知类型框架:
def configure(self):
if class_A_state_condition_expression:
self._on_configured()
我希望在B类中执行一些其他配置工作。因此,我覆盖了configure:
def configure(self):
super().configure()
if class_B_state_condition_expression:
self._on_configured()
然后,类C可以从“ B”或“ A”继承。但是,在上面的代码中,很明显'C'将对_on_configured()进行两次调用。一个最小的人为例子是:https://pastebin.com/52kY6pe7
所以,我的问题是:当我想向派生类提供门控通知时,什么是干净的解决方案?我可以想到明显的(如下),但是想知道是否有更好的解决方案:
class A:
...
def configure(self, notify):
if class_A_state_condition_expression and notify:
self._on_configured()
class B(A):
...
def configure(self, notify):
super().configure(False)
if class_B_state_condition_expression and notify:
self._on_configured()
为具体起见,在我的特定情况下,目的是“ A”,“ B”和“ C”将通过一段时间内的异步调用来构造其状态,并且仅在构造它们之后才开始转发配置通知,但是,认为上面的代码捕获了我想知道答案的更一般的情况。