Shane Hathaway wrote:
> 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.

No, it's not a bug. This is in fact a feature (like it or not). 
{query|get}Adapter will always try to look up an adapter, whether or not 
the object provides the interface. So the behaviour Chris observed is 
indeed intended. I agree it could be documented better.
_______________________________________________
Zope-Dev maillist  -  Zope-Dev@zope.org
http://mail.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
 http://mail.zope.org/mailman/listinfo/zope-announce
 http://mail.zope.org/mailman/listinfo/zope )

Reply via email to