Ok, but why are those printed differently (ipython --profile=sympy):

In [34]: sin(x).func
Out[34]: sympy.functions.elementary.trigonometric.sin

In [35]: str(sin(x).func)
Out[35]: sin

In [39]: Integral(x, (x,0,1)).func
Out[39]: sympy.integrals.integrals.Integral

In [40]: str(Integral(x, (x,0,1)).func)
Out[40]: <class 'sympy.integrals.integrals.Integral'>

What should I do to have them print in the same manner?

On 13 November 2011 00:42, Aaron Meurer <[email protected]> wrote:

> Hi.
>
> As far as I know, we don't have a function that does exactly that,
> though I could be wrong.  It would be nice to have one, though.
>
> On Sat, Nov 12, 2011 at 11:01 AM, Alexey U. Gudchenko <[email protected]>
> wrote:
> > 12.11.2011 21:42, [email protected] пишет:
> >> This:
> >>
> >> import ast
> >> ast.parse(repr(expression))
>
> If you want a repr() representation, you should instead use srepr().
> (repr() is the same as str()).
>
> >>
> >>  will do the trick if repr is well coded.
>
> str() is coded so that it returns the same thing back from sympify(),
> but it may not give the same thing directly, because you can have
> int/int in an expression.  srepr() should always give the same thing
> back.
>
> >>
> >> How much faith should I put in the repr strings in sympy? Or there is
> >> another way?
> >>
> >> On 12 November 2011 18:20, [email protected] <
> >> [email protected]> wrote:
> >>
> >>> Is there any way to get the expression tree from an expression (either
> >>> using the python abstract syntax tree module or just some tuples):
> >>>
> >>> for example
> >>>
> >>> get_tree( x+y*sin(z) ) would return
> >>>
> >>> (Add, x, (Mul, y, (Sin z)))
> >>>
> >>> or
> >>>
> >>> (BinOp, Add, ((Symbol, x), (BinOp, Mul, (blah blah blah))))
> >>>
> >>
> >
> > I know only how to obtain the childes:
> >
> >>>> e = x+y*sin(z) + z
> >>>> e.args
> > (y*sin(z), z, x)
> >
> >>>> e.args[0]
> >>>> y*sin(z)
> >
> >>>> e.args[0].args
> > (y, sin(z))
> >
> >
> >
> > And test the classes:
> >
> >>>> e.is_Add
> > True
> >
>
> You can get the class name by using .func:
>
> In [25]: e = x + y
>
> In [26]: e.func
> Out[26]: sympy.core.add.Add
>
> In [27]: e.func(*e.args)
> Out[27]: x + y
>
> The invariant in [27] should always hold (except for possibly some
> differences in assumptions).
>
> Aaron Meurer
>
> >
> >
> >
> > In other words, the somewhat tree of the expressions exists.
> >
> > How to represent expression-tree in other formats (strings or
> > structures), I do not know.
> >
> > Regards.
> >
> > --
> > Alexey U.
> >
> > --
> > 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.
> >
> >
>
> --
> 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.
>
>

-- 
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.

Reply via email to