On Nov 30, 2009, at 5:21 PM, Fred Drake wrote:
> On Mon, Nov 30, 2009 at 5:14 PM, Lennart Regebro <rege...@gmail.com> wrote:
>> True. For me utilities are tools. Like CMFs portal_whatever. But in
>> Zope3 even small stupid singleton objects are utilities in some cases,
>> and that is confusing for a beginner.
> I wonder how many typical Python programmers know the term
Point taken, somewhat. That said, it's a term easily used on the Launchpad
team at least. In contrast, I have to explain "utilities"...and, since
"utility" means very little (Python is a utility from some perspectives), I use
"a way to register and get singletons" as my explanation, which seems to work
> Though it's not unusual for there to be exactly one
> instance of a class in a process, it's pretty unusual to think about
> that as a valuable aspect of a class. Which for the traditional
> definition of singleton, it very much is.
Point taken, somewhat. We don't have a single instance of a class. We have a
single instance of an object providing an interface, in a given context
(registry and "name"space at the moment).
This is an extension of the idea of singletons, based on interfaces rather than
classes. Similarly, classic adaptation is an extension of type casting, based
on interfaces. To my mind, and in my explanations, what we actually use
adaptation/multiadaptation for is an extension of class instantiation, based on
interfaces to describe the output rather than classes.
These comparisons are leaky, but these are all mostly leaky in the same,
limited way: you replace classes with interfaces.
I'm trying to solve a real-world problem: I have to explain these concepts to
people who occasionally encounter them in the bowels of the software they write
on a daily basis. I want the relevant API to take less time to explain, and to
be easier to remember with limited exposure. Clearly tying the APIs and
concepts to familiar ideas is a common approach to that problem.
Whatever the solution, the *problem* sounds a lot to me like users of Grok and
BFG, for instance.
> -1 for calling utilities singletons, since that has nothing to do with
> their usage.
> +1 for calling them utilities, since that has everything to do with
> how they're used.
I don't love "singleton." I think it is better than "utility." I agree at
least that it probably isn't better enough to introduce confusion. I'd be more
insistent on "singleton", or finding a better term than either of them, if this
were a fresh API.
Zope-Dev maillist - Zope-Dev@zope.org
** No cross posts or HTML encoding! **
(Related lists -