我们有一个事件处理程序,正在监听ObjectModifiedEvent
容器内容类型的事件。
我们注意到,只要在容器内添加对象,容器就会得到this ObjectModifiedEvent
。
由于将某些东西添加到容器中是该事件处理程序不关心的事情,因此我们正在寻找一种方法,如果这是该事件的触发因素,则可以尽早返回。
我们可以将其与以下内容一起使用:
if event.__class__ != ObjectModifiedEvent:
return
似乎事件参数没有足够的信息了解此事件的根本触发因素(因为将对象添加到容器中确实会更改容器),因此检查事件无济于事。
除了上述技巧以外,还有其他想法可以区分吗?
容器发出一个ContainerModifiedEvent
偶数实例,它是的子类ObjectModifiedEvent
。您的测试有效地测试了是否event
属于子类;更好的技巧是使用来测试类型type(event) not is ObjectModifiedEvent
。
您可以ContainerModifiedEvent
使用以下方法明确过滤:
from zope.container.interfaces import IContainerModifiedEvent
if IContainerModifiedEvent.providedBy(event):
return
这将验证接口,从而可以对该接口的任何实现进行工作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句