[Zope-dev] ZCA proposal

Shane Hathaway shane at hathawaymix.org
Thu Dec 3 05:27:17 EST 2009


Martin Aspeli wrote:
> Gary Poster wrote:
>> I think I could get fully behind the following proposal that others have made (Shane I think was one of several?).
>>
>> IFoo.adapt(...)
>>
>> IFoo.utility(...)
> 
> Thinking about it a bit, it strikes me that IFoo.adapt(context) may not 
> be right. This reads "IFoo adapt context", which doesn't make sense. 
> What I really want to hear is "context adapted to IFoo". So maybe it's
> 
>    IFoo.adapting(context)?
>    IFoo.adapterFor(context)?
>    IFoo.adapter(context)?
> 
> Just thinking out loud.

To me, "myobj.get(x)" reads as "myobj, please get x and give me the 
result", so "IFoo.adapt(y)" reads as "IFoo, please adapt y and give me 
the result".  That statement makes perfect sense to me.

> Thinking out loud further, I think I may actually prefer IFoo.instance() 
> instead of .utility(), but maybe that debate is already passed. 
> .utility() is OK too.

To me, generic names like "instance" and "singleton" suggest we're 
trying to solve some grand problem that would make our brains hurt.  I 
find it more satisfying to solve a more specific problem.

I am participating in this thread because I believe the current 
zope.component API is unnecessarily verbose, hindering readability and 
adoption by Python projects that would benefit.  I think adding adapt() 
and utility() to zope.interface.Interface might improve the situation. 
We could instead add adapt() and utility() functions to the 
zope.component package, but I haven't seen any function signature that 
would turn out as simple as "IFoo.adapt(x)".

Shane



More information about the Zope-Dev mailing list