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

Bernd Dorn zope-mailinglist at mopa.at
Sun Apr 30 18:31:37 EDT 2006


i would use

return IFoo(context, False) is not False or False






On 01.05.2006, at 00:22, Martin Aspeli wrote:

> Hi,
>
> I'm probably doing something very wrong, but ...
>
> I have a general interface that can either by directly provided by  
> an object or class (typically with implements() on the class), but  
> could also be provided via an adapter. I have a few places where I  
> just need to check for this (it's not really a marker interface,  
> but I need to know whether other code later on would be able to use  
> the interface or not).
>
> In my tests, I tried to use queryAdapter(), but that didn't return  
> anything when the interface was implemented directly by the class.  
> Similarly, Interface.providedBy() returns (expectedly) False if the  
> interface could only be obtained via an adapter. Currently I do:
>
> 	  try:
>             adapted = IFoo(context)
>             return True
>         except (ComponentLookupError, TypeError):
>             return False
>
> but that's just silly... Is there a pattern for this?
>
> Martin
>
> -- 
> "You can just adapt yourself out of it..." // Archipelago sprint  
> 26/04/2006
>
> _______________________________________________
> Zope3-users mailing list
> Zope3-users at zope.org
> http://mail.zope.org/mailman/listinfo/zope3-users



More information about the Zope3-users mailing list