[Zope3-Users] Re: Checking if an interface is provided by an object or could be adapted to

Gary Poster gary at zope.com
Mon May 1 08:52:38 EDT 2006


On May 1, 2006, at 2:56 AM, Bernd Dorn wrote:

>
> On 01.05.2006, at 01:55, Stephan Richter wrote:
>
>> On Sunday 30 April 2006 19:34, Bernd Dorn wrote:
>>> component.queryMultiAdapter((bar,baz), IFoo) is not None or False
>
> this way you always get True or False
>
> ok, for this case it is ok
>
> but when you have a class that  uses __conform__ None may be  
> returned when you use this
>
> IFoo(context,False)
>
> or am i wrong?

It might return None, which according to our semantics means that the  
adaptation failed.  Since None has a False meaning in a boolean  
context, Stephan's version will work out.  However...

>> Why not just:
>>
>> component.queryMultiAdapter((bar,baz), IFoo, default=False)

...this assumes that the adapter evaluates to a boolean True, which  
is not generically (reliably) the case.  As a pattern, Bernd's  
version is safer, although the trailing "or False" is superfluous.

>>> component.queryMultiAdapter((bar,baz), IFoo) is not None


Gary


More information about the Zope3-users mailing list