[Python-3000] ABC's, Roles, etc
Phillip J. Eby
pje at telecommunity.com
Thu May 10 17:36:51 CEST 2007
At 09:06 AM 5/10/2007 -0400, Benji York wrote:
>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.
Okay, but that's quite the opposite of what I understand Jeff to be
saying in this thread, which is that not only is LBYL good, but that
he does it all the time.
>>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.
Yes, it does. In fact, adaptation is pretty much all they're good
for, except for specifying argument types:
>My main intent in piping up was
>dispelling the LBYL dispersions about zope.interface. ;)
Well, "back in the day", before PyProtocols was written, I discovered
PEP 246 adaptation and began trying to convince Jim Fulton that
adaptation beat the pants off of using if-then's to do "implements"
testing. His argument then, IIRC, was that interface verification
was more important. I then went off and wrote PyProtocols in large
part (specifically the large documentation part!) to show him what
could be done using adaptation as a core concept.
>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.
Well, as Nick Coghlan's already pointed out, the PEP is mostly about
creating a standard set of hooks, so that each framework doesn't have
to reinvent decorators and syntax.
>>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
In which case, you might well be happy with PEP 3124 interfaces,
unless you want to use instance-specific interfaces a lot.
>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
Sure, which is another reason why PEP 3124 includes them.
More information about the Python-3000