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