[Zope-dev] component registry navelgazing

Jim Fulton jim at zope.com
Mon Jun 13 12:43:34 EDT 2011


On Mon, Jun 13, 2011 at 12:38 PM, Jim Fulton <jim at zope.com> wrote:
> On Sun, Jun 12, 2011 at 4:48 PM, Chris McDonough <chrism at plope.com> wrote:
>> Currently if you ask a registry to singly-adapt an object to an
>> interface, and the object you're trying to adapt implements that
>> interface, here's what happens:
>>
>>>>> from zope.component.registry import Components
>>>>> c = Components()
>>>>> from zope.interface import Interface, implements
>>>>> class IFoo(Interface): pass
>> ...
>>>>> class Foo(object):
>> ...     implements(IFoo)
>> ...
>>>>> foo = Foo()
>>>>> c.queryAdapter(IFoo, foo)
>> <None>
>>
>> In order to get the object itself back from such an adaptation, you need
>> to use the default= argument.
>>
>>>>> c.queryAdapter(IFoo, foo, default=foo)
>> <__main__.Foo object at 0x24a3910>
>>
>> This seems slightly inconsistent with the adaptation worldview imposed
>> by getAdapter/queryAdapter.  I think it would be more consistent if
>> "c.queryAdapter(IFoo, foo)" returned foo if foo already implemented IFoo
>> and there was no other more specific adapter registered for the IFoo/foo
>> pair in the registry, no?
>
> I don't know what getAdapter/queryAdapter you're referring to in
> "This seems slightly inconsistent with the adaptation worldview imposed
> by getAdapter/queryAdapter."
>
> Do you mean " This seems slightly inconsistent with the adaptation
> worldview imposed
> by interface __call__." ?

By the later messages, I can see that that is what you meant to say.

Jim

-- 
Jim Fulton
http://www.linkedin.com/in/jimfulton


More information about the Zope-Dev mailing list