On 12 June 2011 21:48, Chris McDonough <chr...@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?
+1 Martin _______________________________________________ Zope-Dev maillist - Zope-Dev@zope.org https://mail.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - https://mail.zope.org/mailman/listinfo/zope-announce https://mail.zope.org/mailman/listinfo/zope )