我有一个主循环,可以完成一些工作并得出结果。
我希望其他对象能够注册,以便在有消耗结果时得到通知。
类似这样的东西:
consumers = []
def add_consumer(consumer):
if consumer not in consumers:
consumers.append(consumer)
while True:
result = work()
for consumer in consumers:
consumer.consume(result)
由于其他人将能够定义自己的使用者,所以我不确定如何最好地布置代码,这样:
赞:
for consumer in consumers:
try:
consumer.consume(result)
except AttributeError:
pass
使用Consumer抽象类(ABC)会更好,这样用户就更容易知道他们需要定义哪种方法?
如果建议采用ABC方式,我是否应该仍然尝试//除了invoke()调用或使用isinstance()之外?
for consumer in consumers:
if isinstance(consumer, Consumer):
consumer.consume(result)