Re: implementing zope.component 4.0

Chris McDonough <[email protected]>
Newsgroups gmane.comp.web.zope.devel
Message-ID <[email protected]>
Tres Seaver wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> Gary Poster wrote:
>> On Nov 27, 2009, at 6:32 AM, Martijn Faassen wrote:
> 
>>> Utility lookups versus adapter lookups
>>> --------------------------------------
>>>
>>> There was some discussion on whether utility lookups are really 
>>> something fundamentally different than adaptation as adaptation 
>>> *creates* a new instance while utility lookup uses a registered 
>>> instance. I think the essential part here is however: "give me an 
>>> instance that implements IFoo", and utility lookup fits there. We could 
>>> even envision a way to create utilities that *does* instantiate them on 
>>> the fly - it shouldn't affect the semantics for the user of the utility.
>> As above, I disagree.
> 
> The root of the disagreement here is that you seem to want the *caller*
> to care about something which is important only to the person who
> *registers* the thing being looked up.  From the caller's perspective,
> the call site needs an object implementing IFoo, looked up using some
> number N of context arguments, where N could be 0 (no context required
> to find the object).  The fact that, under the hood, an adapter lookup
> happens to call a factory, passing the context args, is not relevant *to
> the caller*.

I understand that the idea explained above is conceptually integral to a lot of 
people, and basically unquestionable.  But as devil's advocate sort of thing 
can we put this traditional worldview aside for a minute,  and just sort of 
take this from ground zero?

In "normal Python", callers often do need to understand whether the function 
they're calling is a factory which constructs a new object, or a function which 
returns a "global", because the caller needs to know what the impact of 
mutating the result is.

We call non-factories utilities and we call factories adapters.  So the caller 
*already* needs to make a distinction between the two.

- C

_______________________________________________
Zope-Dev maillist  -  [email protected]
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 )
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.