[Zope-dev] zope.component: calling an Interface and calling queryAdapter give differing results

Shane Hathaway shane at hathawaymix.org
Tue Aug 19 15:09:39 EDT 2008


Chris Withers wrote:
>  From a user's perspective, this makes no sense:
> 
>  >>> from zope.interface import implements,Interface
>  >>> from zope.component import queryAdapter
>  >>> class ISomething(Interface): pass
> ...
>  >>> class MyClass: implements(ISomething)
> ...
>  >>> m = MyClass()
> 
> Right, so this does make sense:
> 
>  >>> ISomething(m)
> <__main__.MyClass instance at 0x00BED6E8>
> 
> This does not:
>  >>> repr(queryAdapter(m,ISomething))
> 'None'

Looks like a bug to me.  If the object passed as the first argument to 
queryAdapter() implements the interface passed as the second argument, I 
believe queryAdapter() should return the object, regardless of any 
component registrations.

Shane



More information about the Zope-Dev mailing list