At 10:53 AM 11/23/2006 -0800, Guido van Rossum wrote: >On 11/22/06, Thomas Lotze <[EMAIL PROTECTED]> wrote: > > Guido van Rossum wrote: > > > > >> I'm sure you're aware about it, but in Zope 3 terminology, these are > > >> 'provide' and 'implement', respectively. > > > > > > I like provide, but I'm not so sure about implement, since it is awfully > > > ambiguous -- most of the time it is the class that does the implementing. > > > That's why I settled for "has". > > > > JFTR: In Zope3, classes "implement" interfaces while instances "provide" > > them. > >Well, that pretty much proves their terminology is confusing. :-)
You can actually blame that one on me; I'm the one who proposed it. :) At the time, mailing list discussions were hard to follow as to whether we were talking about instances or classes when we were talking about "implements". So I suggested that we add "provide" to mean that you could actually *use* the interface on the object, and leave "implements" to mean that your *instances* provide the interface. The distinction helped the immediate discussion, but later, when I went on to create PyProtocols, I realized it wasn't as clear outside the original context, so I stopped talking about 'implements' entirely and just always used 'provides' instead. So, instead of saying that a class "implements" X, PyProtocols says that a class' *instances* provide X, and you declare this with 'instancesProvide'. If the class *itself* provides the interface (e.g. via classmethods), you declare it with 'classProvides'. So, I think the "provide" term was a good idea, it's just that having a different word to mean "my instances provide", didn't work out for me. _______________________________________________ Python-3000 mailing list Python-3000@python.org http://mail.python.org/mailman/listinfo/python-3000 Unsubscribe: http://mail.python.org/mailman/options/python-3000/archive%40mail-archive.com