[Types-sig] Interface PEP
Paul Prescod
paulp@ActiveState.com
Wed, 14 Mar 2001 13:06:23 -0800
Michel Pelletier wrote:
>
>...
>
> Well, the syntax is a secondary issue, I'm concerned more with the model.
> I think what you are saying is that my proposal specifies that
> specification and implementation must be seperate. Or maybe you are
> saying what you said, in that case, you lost me.
I think I was saying what I said. :)
Your syntax:
interface ReadableFile:
def read(size):
pass
>>> print dir(ReadableFile)
[...., implementedBy, ...]
>>> class MyReadFile implements ReadFile:
... ...
My syntax:
>>> class _ReadableFile:
... def __implementedby___(self, obj):
... return hasattr(obj, read)
... ReadFile = _ReadableFile()
>>> class MyReadFile:
... __implements__=[ReadFile]
> > Mine are basically functional interfaces (in fact
> > they could really be functions instead of classes).
>
> You lost me there too. ;)
The operative part of my interfaces is the __implementedby__ method.
What you say in a bunch of method declarations, I say in
__implementedby__
> > Your interface objects have an implicitly generated implementedBy
> > method. Mine have an explicit method.
>
> I don't get this either, can you be more explicit about your explicitness,
> also by "your" I assume you mean me? Above you were referring to me in
> the third person, so I'm lost yet again.
You create objects that don't LOOK like they have an implementedBy
method, but they really do (implicit). I require the creation of an
explicit __implementedby__ method.
The interface syntax version is more compact and readable for
complicated interfaces. The functional version is more flexible. They
will probably work together well as alternate syntaxes.
--
Python:
Programming the way
Guido
indented it.
- (originated with Skip Montanaro?)