Differences creating tuples and collections.namedtuples

Gregory Ewing greg.ewing at canterbury.ac.nz
Tue Feb 19 02:54:49 EST 2013


Steven D'Aprano wrote:

> Terry Reedy wrote:

>>In fact, one reason to subclass a class is to change the initialization
>>api.

> That might be a reason that people give, but it's a bad reason from the
> perspective of interface contracts, duck-typing and the LSP.

Only if you're going to pass the class off to something as
a factory function.

Note that having a different constructor signature is *not*
an LSP violation for *instances* of a class. The constructor
is not part of the interface for instances, only for the
class itself.

In practice, it's very common for a class to have a different
constructor signature from its base class, and this rarely
causes any problem.

IPython is simply making a dodgy assumption. It gets away with
it only because it's very rare to encounter subclasses of
list or tuple at all.

-- 
Greg



More information about the Python-list mailing list