Извинения - название более напыщенное, чем рассматриваемая проблема (я плохо умею называть).У меня есть класс 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'со временем создаст их состояние с помощью асинхронных вызовов и начнет пересылку уведомлений о конфигурации только после их создания, но я думаю, что приведенный выше код отражает более общую ситуацию, для которой я хотел бы знать ответ.