带字符串的 Sympy 函数

问题描述 投票:0回答:1

我想要一个自定义类,原则上它的行为类似于 sympy

Function
,但也包含一个字符串。但是,当我从 sympy Function 创建派生类时,以下代码会产生错误(“无法解析 'a b'):

import sympy as sp
class testClass(sp.Function):
    pass
a = testClass('a b')

我知道 sympify 函数被调用,并且在将 'a b' 解析为 sympy 表达式时遇到问题。作为满足我的需求的可能解决方法,我发现

a = testClass(sp.Symbol('a b'))

会起作用的。不过,在这里避免使用 Symbol 会很有趣。根据我的理解,要使其正常工作,我必须重新实现

__new__
方法。这是正确的还是有简单的解决方案?

sympy subclass
1个回答
0
投票

根据奥斯卡·本杰明的评论,我的作品如下:

import sympy as sp
class testClass(sp.Function):
    def __new__(cls, *args, **kwargs):
        new_args = (sp.Symbol(x) if isinstance(x, str) else x for x in args)
        return super().__new__(cls, *new_args, **kwargs)
    # other methods...

c = testClass('a b')
© www.soinside.com 2019 - 2024. All rights reserved.