I wasn't trying to rewrite the eval function. My original plan is in eval() 
when two symbolic values are not in order,
I will return KroneckerDelta(j, i), is this method more preferred? 

If not, I'm trying to swap inputs inside of eval() if inputs are not in 
order but having trouble with accessing cls._args

Bi Ge

On Tuesday, March 5, 2013 5:50:52 PM UTC-5, Julien Rioux wrote:
>
> What Stefan writes is good advice for designing classes in general but in 
> this particular case, KroneckerDelta being a subclass of Function, we don't 
> need to overwrite __new__ since the eval method is meant exactly for this. 
> From sympy/core/function.py:
>
>     def eval(cls, *args):
>         """
>         Returns a canonical form of cls applied to arguments args.
>
>         The eval() method is called when the class cls is about to be
>         instantiated and it should return either some simplified instance
>         (possible of some other class), or if the class cls should be
>         unmodified, return None.
>
>         [...]
>         """
>
> In the eval method of KroneckerDelta we can already see that the first few 
> lines is an attempt to order the args:
>
>     def eval(cls, i, j):
>         # ...
>         if (i > j) is True:
>             return cls(j, i)
>
> The problem is that comparison with i > j only works for numerical values, 
> not for symbolic value.
>
> Cheers,
> Julien
>

-- 
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+unsubscr...@googlegroups.com.
To post to this group, send email to sympy@googlegroups.com.
Visit this group at http://groups.google.com/group/sympy?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to