[Zope-dev] adapting to None
Dieter Maurer
dieter at handshake.de
Sat Dec 13 05:39:12 EST 2008
Chris Withers wrote at 2008-12-13 10:18 +0000:
>Dieter Maurer wrote:
>> I think that in some cases, it would be useful for an adapter factory
>> to say 'I cannot handle this case' and then the adapter lookup
>> is continued. Maybe, this is already supported?
>> Then, maybe, you can use it?
>
>That's exactly what returning None indicates...
>
>>> def some_adapter(obj):
>>> if something:
>>> return None
>>> return somethingelse
>>
>> Your use case seems to abuse adaptation:
>>
>> Adaptation to an interface must always return an object which provides
>> the interface.
>> "None", by default, only provides very few interfaces
>
>...indeed, however, I really do want to return None here.
Then, use something different from adaptation (as adaptation does
not fit your wishes).
I expect that your adapter factory can raise "ComponentLookupError"
when it cannot handle the adaptation and then the "default" argument
of the adapter lookup will take effect.
adapter = IMyInterface(obj, None)
if adapter is None:
# adaptation impossible
....
def adapter_factory(...):
...
raise ComponentLookupError()
--
Dieter
More information about the Zope-Dev
mailing list