什么可能导致 Interface(obj) 返回 obj,而 getAdapter(obj, Interface) 返回一个经过适当调整的对象?
问问题
84 次
1 回答
2
如果给定的实例已经提供了接口,那么IInterface(instance)
将返回传入的实例。毕竟已经满足需求了,instance
如果需要使用IInterface
方法可以直接使用:
>>> import zope.interface
>>> class IFoo(zope.interface.Interface):
... pass
...
>>> class Foo(object):
... zope.interface.implements(IFoo)
... pass
...
>>> foo = Foo()
>>> IFoo(foo)
<__main__.Foo object at 0x10eed22d0>
>>> IFoo.providedBy(foo)
True
getAdapter()
直接转到适配器注册表,如果您为给定类注册了适配器,IInterface
则将返回该适配器。这有点没有意义,因为原始对象已经提供了接口,因此不需要进行任何调整。
于 2012-12-17T17:12:11.443 回答