On Sat, 19 Mar 2005 20:07:40 -0800, Kay Schluehr wrote: > It is bad OO design, George. I want to be a bit more become more > specific on this and provide an example:
Having thought about this for a bit, I agree it is a powerful counter-argument and in many other languages I'd consider this a total win. But this is Python, and frankly, I've overridden dict more than once and violated the Liskov substitution principle without thinking twice. (Once, oh yes, but not twice.) Of course, all the code was under my control then. I think the tipping point for me depends on how the interfaces in Python are going to be implemented, which I haven't dug into. If the dict class gets an interface definition, can I subclass from dict and "cancel" (or some other term) the interface I inherited? If so, then this might still be OK, although if interfaces aren't going to confuse newbies enough, wait 'till we try to explain that their code is blowing up because they forgot to "cancel" their interface, and they can't *really* pass their subclass in to something expecting a dict interface. If you *can't* cancel or downgrade the interface, then I'd say this argument is still good; dict should be kept minimal and this should go in a subclass. -- http://mail.python.org/mailman/listinfo/python-list