[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