This is what I was afraid of. The problem is that the __mul__ that I need to get rid of is on Basic, which all my classes inherit from. I will probably just write a function that takes the flattened args of the final Mul class and "do the right thing"
Cheers, Brian On Mon, Nov 10, 2008 at 12:43 PM, Robert Kern <[EMAIL PROTECTED]> wrote: > > On Mon, Nov 10, 2008 at 13:16, Brian Granger <[EMAIL PROTECTED]> wrote: >> >> Hi, >> >> By default, Python's * operator work in L->R order, so: >> >> a*b*c*d = ((a*b)*c)*d >> >> But, I am implementing some operators from quantum mechanics that I >> want to apply like this: >> >> a*b*c*d = a*(b*(c*d)) >> >> Is this possible with sympy? In my case, a, b, c, and d are custom >> subclasses of Basic that don't commute. I would like to do this using >> a custom __mul__ method on my class, but I am not sure that will work. >> >> Any thoughts? > > Associativity of operations is handled by the parser, not the classes. > You might be able to fake it by making __mul__ unimplemented and only > implement __rmul__, but that might be fragile. > > -- > Robert Kern > > "I have come to believe that the whole world is an enigma, a harmless > enigma that is made terrible by our own mad attempt to interpret it as > though it had an underlying truth." > -- Umberto Eco > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "sympy" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sympy?hl=en -~----------~----~----~----~------~----~------~--~---
