[Zope3-dev] Re: reasonable syntax for multi-adaptation

Jim Fulton jim at zope.com
Wed Sep 26 15:47:47 EDT 2007


On Sep 26, 2007, at 3:37 PM, Dieter Maurer wrote:

> Jim Fulton wrote at 2007-9-26 15:10 -0400:
>> ...
>>> Jim Fulton wrote at 2007-9-26 11:29 -0400:
>>>> ...
>>>>>     IFoo(x)
>>>>>     IBar(multi=(x,y))
>>>>
>>>> Actually, that is not the case.  If x already provides IFoo,  
>>>> then in
>>>> the first case, the existing object is retuned. Nothing is
>>>> instantiated.  OTOH, in:
>>>>
>>>>   getMultiAdapter([x], IFoo)
>>>>
>>>> or
>>>>   getAdapter(x, IFoo)
>>>>
>>>> either there is an error or some factory will be called.  x  
>>>> won't be
>>>> returned unless the factory happens to return it.
>>>
>>> Is this not an irrelevant implementation detail?
>>
>> No, the specified behavior is different.
>
> Hm. But "getAdapter" and "getMultiAdapter" may return "x" as well
> (when the factory decides to do this).
>
> Thus, why is it relevant?

Because they don't take into account what x already provides.  They  
will always call some factory.   Also, they never call __conforms__.

Jim

--
Jim Fulton
Zope Corporation




More information about the Zope3-dev mailing list