[Python-Dev] PEP 246, redux
Roeland Rengelink
roeland.rengelink at chello.nl
Wed Jan 12 02:48:43 CET 2005
I'm trying to understand the relation between Guido's posts on optional
static typing and PEP 245 (interfaces) and 246 (adaptation). I have a
couple of questions
PEP 245 proposes to introduce a fundamental distinction between type and
interface. However, 245 only introduces a syntax for interfaces, and
says very little about the semantics of interfaces. (Basically only that
if X implements Y then implements(X, Y) will return True). The
semantics of interfaces are currently only implied by PEP 246, and by
Guido's posts referring to 246.
Unfortunately PEP 246 explicitly refuses to decide that protocols are
245-style interfaces. Therefore, it is not clear to me how acceptance of
245 would impact on 246? Specifically, what would be the difference
between:
x = adapt(obj, a_245_style_interface)
x = adapt(obj, a_protocol_type)
and, if there is no difference, what would the use-case of interfaces be?
Put another way: explicit interfaces and adaptation based typing seem to
be about introducing rigor (dynamic, not static) to Python. Yet, PEP
245 and 246 seems to go out of their way to give interfaces and
adaptation as little baggage as possible. So, where is the rigor going
to come from?
On the one hand this seems very Pythonic - introduce a new feature with
as little baggage as possible, and see where it evolves from there. Let
the rigor flow, not from the restrictions of the language, but from the
expressive power of the language.
On the other hand: why not, at least:
- explore in 245 how the semantics of interfaces might introduce rigor
into the language. It would be particularly illuminating to find out in
what way implementing an interface differs from deriving from an ABC
and in what way an interface hierarchy differs semantically from a
hierarchy of ABCs
- rewrite 246 under the assumption that 245 (including semantics) has
been accepted
I would volunteer, but, for those of you who hadn't noticed yet, I don't
know what I'm talking about.
Cheers,
Roeland Rengelink
More information about the Python-Dev
mailing list