假设我有一个包含一些数值的容器类:
hashCode()
我想给那些System.out.println("Aa".hashCode() + "," + "BB".hashCode());
一个lambdified sympy表达式,结果得到一个新的class Container:
def __init__(self, value):
self.value = value
:
Container
现在我真的不介意在Container
周围编写一些解包并打包值的包装器,但问题出在这里:
与Numpy一样,我也希望它能够处理与值混合的列表或列表:
import sympy as sp
a = Container(1)
b = Container(-0.5)
x, y = sp.symbols("x y")
f = sp.lambdify((x, y), sp.atan(x)**-1*sp.pi*10 - 1/y)
result = f(a, b) # result should be a Container with value 42
实现这一目标的优雅方式是什么?
修改
我已经编写了一个围绕lambdify的包装函数,它在应用sympy表达式并打包结果之前解包值,但它涉及检查参数的类型是f
还是a = Container(-47)
b = Container(19)
c = [Container(0), Container(1), Container(2), Container(3), Container(4)]
x, y, z = sp.symbols("x y z")
f = sp.lambdify((x, y, z), z**4 + x/6*z**3 + y*z**2 + (x-2*y)/6*z + 3)
result = f(a, b, c) # should be a list of Containers with values 3, 1, 4, 1 and 5
这违背了Python的整个鸭子式的哲学。我的实际问题是:是否有更多的pythonic方法可以做到这一点,不涉及丑陋的类型检查?