Leveraging Python's duck typing
Most of the time that a design involves inheritance, there's a clear relationship from a superclass to one or more subclasses. In the Choosing between inheritance and extension – the is-a question recipe of this chapter as well as the Extending a collection – a list that does statistics recipe in Chapter 6, Basics of Classes and Objects, we've looked at extensions that involve a proper subclass-superclass relationship.
Python doesn't have a formal mechanism for abstract superclasses. The standard library, however, has the abc
module that supports the creation of abstract classes.
This isn't always necessary, however. Python relies on duck typing to locate methods within a class. This name comes from the quote:
"When I see a bird that walks like a duck and swims like a duck and quacks like a duck, I call that bird a duck."
The quote is originally from James Whitcomb Riley. It's sometimes taken as a summary of abductive reasoning: we go from an observation to a...