New representation for objects

This commit is contained in:
Benjamin Bertrand
2016-03-07 14:36:13 +03:00
parent 04099040d4
commit 7f891956fc
4 changed files with 65 additions and 63 deletions

View File

@@ -24,7 +24,7 @@ def pstf_factory(pstf_tokens):
>>> from .operator import op
>>> pstf_t = [2, 3, op.add]
>>> pstf_factory(pstf_t)
< <class 'pymath.calculus.expression.Expression'> [2, 3, +] >
< Expression [2, 3, +]>
>>> pstf_factory([2])
2
>>> type(pstf_factory([2]))
@@ -84,11 +84,11 @@ class Expression(Explicable):
>>> with Expression.tmp_render():
... for i in exp.simplify().explain():
... i
< <class 'pymath.calculus.expression.Expression'> [2, 3, 5, /, *] >
< <class 'pymath.calculus.expression.Expression'> [2, < Fraction 3 / 5>, *] >
< <class 'pymath.calculus.expression.Expression'> [< Fraction 3 / 5>, 2, *] >
< <class 'pymath.calculus.expression.Expression'> [3, 2, *, 5, /] >
< <class 'pymath.calculus.expression.Expression'> [6, 5, /] >
< Expression [2, 3, 5, /, *]>
< Expression [2, < Fraction 3 / 5>, *]>
< Expression [< Fraction 3 / 5>, 2, *]>
< Expression [3, 2, *, 5, /]>
< Expression [6, 5, /]>
>>> from .render import txt
>>> with Expression.tmp_render(txt):
... for i in exp.simplify().explain():
@@ -152,10 +152,6 @@ class Expression(Explicable):
"""
return self.STR_RENDER(self.postfix_tokens)
def __repr__(self):
return " ".join(["<", str(self.__class__),
str(self.postfix_tokens), ">"])
def simplify(self):
""" Compute entirely the expression and return the result with .steps attribute """
try:
@@ -262,7 +258,7 @@ class Expression(Explicable):
>>> f = Expression('3*4+5')
>>> f1 = f.simplify()
>>> Expression.develop_steps([e1, f1, op.add])
[< <class 'pymath.calculus.expression.Expression'> [1, 2, +, 3, 4, *, 5, +, +] >, < <class 'pymath.calculus.expression.Expression'> [3, 12, 5, +, +] >]
[< Expression [1, 2, +, 3, 4, *, 5, +, +]>, < Expression [3, 12, 5, +, +]>]
>>> e = Expression('1+2')
>>> e1 = e.simplify()
>>> f = Expression('3*4+5')
@@ -270,7 +266,7 @@ class Expression(Explicable):
>>> g = Expression('6+7')
>>> g1 = g.simplify()
>>> Expression.develop_steps([e1, f1, op.add, g1, op.mul])
[< <class 'pymath.calculus.expression.Expression'> [1, 2, +, 3, 4, *, 5, +, +, 6, 7, +, *] >, < <class 'pymath.calculus.expression.Expression'> [3, 12, 5, +, +, 13, *] >]
[< Expression [1, 2, +, 3, 4, *, 5, +, +, 6, 7, +, *]>, < Expression [3, 12, 5, +, +, 13, *]>]
"""
with Expression.tmp_render():
tmp_steps = list(Explicable().merge_history(tokenList))