must be a duck.") By emphasizing interfaces rather than specific types,
well-designed code improves its flexibility by allowing polymorphic
substitution. Duck-typing avoids tests using :func:`type` or
- :func:`isinstance`. (Note, however, that duck-typing can be complemented
- with abstract base classes.) Instead, it typically employs :func:`hasattr`
- tests or :term:`EAFP` programming.
+ :func:`isinstance`. (Note, however, that duck-typing can be complemented
+ with :term:`abstract base class`\ es.) Instead, it typically employs
+ :func:`hasattr` tests or :term:`EAFP` programming.
EAFP
Easier to ask for forgiveness than permission. This common Python coding