Пример #1
0
    def eval(cls, *args):
        obj = Expr.__new__(cls, *args)
        #use dummy variables internally, just to be sure
        nargs = len(args) - 1

        expression = args[nargs]
        funargs = [C.Symbol(arg.name, dummy=True) for arg in args[:nargs]]
        #probably could use something like foldl here
        for arg, funarg in zip(args[:nargs], funargs):
            expression = expression.subs(arg, funarg)
        funargs.append(expression)
        obj._args = tuple(funargs)

        return obj