[Python-Dev] type categories

Martin v. Loewis martin@v.loewis.de
13 Aug 2002 22:27:29 +0200

Andrew Koenig <ark@research.att.com> writes:

> So what I wonder is this:  Has there been much thought about making
> these type categories more explicitly part of the type system?

Certainly. Such a feature has been called "interface" or "protocol"; I
usually associate with "interface" a static property (a type
implements an interface, by means of a declaration) and with
"protocol" a dynamic property (an object conforms to a protocol, by
acting according to the rules that the protocol set).

Your question exist in many variations. One of it lead to the creation
of the types-sig, another one triggered papers titled "Optional Static
Typing", see


The most recent version of an attempt to making interfaces part of
Python is PEP 245,


I believe there is agreement by now that there will be difference
between declared interfaces and implemented protocols: an object may
follow the protocol even if it did not declare the interface, and an
object may violate a protocol even if its type did declare the

Beyond that, there is little agreement.