[EMAIL PROTECTED] wrote: > Now suppose I set "expression2 = Sum([a,-a])" and Sum.simplify() > recognises that the two terms cancel and the Sum has value 0. > > Can I make "expression2.simplify()" transform expression2 from an > instance of Sum to an instance of Number(0) **in place**? Is that > possibe, or do I really have to write
I think it's much better for simplify() to return a new object always, and leave the original object unmodified. You can still write: expression2 = expression2.simplify() if you don't care about the old value. > expression2 = SimplifyFunction(expression2) This is another valid solution, but it's not an OO solution (you will need to use "isinstance" to write "SimplifyFunction"). > and use the function return to set expression2 to be a Number(0) > object, which is annoying for a variety of reasons! Have I made a > mistake in the design? It's usually considered poor OO style to have an object change its class at runtime, although I'm sure you could do it in Python ("__bases__" would be a place to start) if you really wanted. For what you're trying to do, I don't think it's necessary, though. Dave -- http://mail.python.org/mailman/listinfo/python-list