Interfaces versus Abstract Base Classes in Python

In his Python 3000 keynote, Guido talked about having marker interfaces to make more explicit notions like "list-like" and "file-like". As I understood it, the idea is to be able to test that an object is "list-like" or "file-like" explicitly rather than arbitrarily pick some attribute on the object to test for as the diagnostic.

What confused me at the time was that Guido was calling this feature "Abstract Base Classes".

To me, this conflates inheritance with polymorphism. Aren't abstract base classes fundamentally about inheritance of (partial) implementation? But surely this isn't what Guido is talking about—he's purely talking about the interchangeability of objects (i.e. polymorphism).

So isn't the term "abstract base class" inappropriate and potentially misleading?

The original post was in the category: python but I'm still in the process of migrating categories over.

The original post had 9 comments I'm in the process of migrating over.