但是,它确实缺乏灵活性。
好吧……实际上,如果您想要异步API,那么对我来说这似乎是一个不错的设计。通常是这样。也许您所需要的只是从stderr切换到Python的
logging模块,该模块具有自己的发布/订阅模型,
Logger.addHandler()以及诸如此类的东西。
如果您确实想支持观察者,我的建议是使其保持简单。您实际上只需要几行代码。
class Event(object): passclass Observable(object): def __init__(self): self.callbacks = [] def subscribe(self, callback): self.callbacks.append(callback) def fire(self, **attrs): e = Event() e.source = self for k, v in attrs.iteritems(): setattr(e, k, v) for fn in self.callbacks: fn(e)
您的Job类可以子类化
Observable。发生感兴趣的事情时,请致电
self.fire(type="progress",percent=50)或类似电话。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)