Phillip J. Eby wrote: > At 06:11 PM 5/9/2007 -0400, Benji York wrote: >> By way of clarification: Even in the large Zope 3 projects I work on >> (which obviously use zope.interface), we virtually never use >> interfaces for LBYL (just as Zope 3 itself rarely does). > > Yet, this is precisely what Jeff is claiming zope.interface is > useful/desirable *for*,
I'll let him speak for himself. > and Jim Fulton has also been quite clear that > LBYL is its very raison d'etre. I would let Jim speak for himself too, but I prefer to put words in his mouth. ;) While zope.interface has anemic facilities for "verifying" interfaces, few people use them, and even then rarely outside of very simple "does this object look right" when testing. It may have been believed verification would be a great thing, but it's all but deprecated at this point. > And thus, for all of the use cases you just described, the minimal > PEP 3124 Interface implementation should do just fine, yes? Could be, especially if it allows for adaptation. I don't have the time to pour over the PEP right now. My main intent in piping up was dispelling the LBYL dispersions about zope.interface. ;) If the PEP cooperates as well with zope.interface as you suggest, all will be good in the world. Personally I'd prefer sufficient hooks be added to the language and these types of things (interfaces, adaptation, generic functions, etc.) be left to third parties (like yourself) instead of being canonicalized unnecessarily. > Indeed, > ABCs would work for those use cases too, if you didn't need > adaptation. Or am I missing something? The main advantage I see to zope.interface is adaptation. Other than that, the fact that the inheritance and interface hierarchies aren't mixed. I would turn the argument around and assert that interfaces can be used for the rare LBYL uses that ABCs appear to be aimed at, as well as more interesting things. -- Benji York http://benjiyork.com _______________________________________________ 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