phil hunt wrote: > To me, this is nonsense. Under this definition any subtype must > behave the same as its parent type, becausde if it doesn't there > will be some q(y) that are different to q(x).
Not necessarily..... the set of operations on y could be a superset of the set of operations on x. So you could have q(y) == q(x) (for all q applicable to x) but there could be w(y) that has no w(x). In C++ terms, this implies no virtual functions. Which is not to say that I'm disagreeing with your basic point: insisting on q(y) == q(x) for all q will greatly limit your use of polymorphism, unless you are 'sensible' (or perhaps what a mathematician would call 'loose') about how you define your "q"s! -- http://mail.python.org/mailman/listinfo/python-list