On Nov 30, 2009, at 11:51 AM, Chris McDonough wrote: > 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.
Yes. Gary _______________________________________________ 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 )
