Ordered terms of a new Expression

43 views
Skip to first unread message

Paul Royik

unread,
Mar 25, 2021, 10:06:42 AM3/25/21
to sympy
I want to create a class that makes expression colored.
class Colored(Expr):
    pass

How do I make Colored behave exactly as its arg, when I sort args?

(x+Colored(2)).as_ordered_terms() should give the same as (x+2).as_ordered_terms()
(x*Colored(y)).as_ordered_factors() should give the same as (x*y).as_ordered_factors()
Do I need to override some methods?

Paul Royik

unread,
Mar 25, 2021, 11:43:14 AM3/25/21
to sympy
Also, what is the best way to set a color? Setting color in args is not a very good idea, as color is a string.

Aaron Meurer

unread,
Mar 26, 2021, 4:54:02 PM3/26/21
to sympy
I didn't test it extensively, but I think it should be enough to
override the sort_key method

class Colored(Expr):
def sort_key(self, order=None):
return self.args[0].sort_key(order=order)

Aaron Meurer
> --
> You received this message because you are subscribed to the Google Groups "sympy" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to sympy+un...@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/sympy/62a9ddd1-b7be-4821-94f7-37103518355en%40googlegroups.com.

Paul Royik

unread,
Mar 28, 2021, 8:33:15 AM3/28/21
to sympy
Thank you!
Reply all
Reply to author
Forward
0 new messages