我正在为我的 sympy 代码编写一些测试,自然我需要比较两个 sympy 矩阵。每个矩阵都包含类型的对象Poly
作为其条目(实际上,它包含我创建的扩展类的Poly
类的对象,但这不应该有所作为)。
问题是,当我尝试在测试中比较这些对象时,即使表达式相同,生成器也不同,即使它们相同,也会产生失败的测试。
例如:
from sympy.matrices import Matrix
expected_matrix = Matrix([[Poly(1.0*y1 + 2.0*x2 + 1.0*x1, y1, x2, x1, domain='RR')]])
actual_matrix = Matrix([[Poly(1.0*y1 + 1.0*x2, y2, y1, x2, x1, domain='RR') + Poly(1.0*x2 + 1.0*x1, y2, y1, x2, x1, domain='RR')]])
# however, when these get compared, they don't agree because notice that the `y2` generator does not appear in the `expected_matrix`.
我的问题是如何使发电机相等。如何将生成器添加到实际输出中?或者,让生成器远离预期输出?
由于gens
属性是一个元组,所以这很困难,因为我不能只向gens
属性添加一个元素:
actual_matrix.gens = expected_matrix.gens
也许我可以单独比较表达式,但这对我来说似乎很冒险(除非有更多经验的人可以说服我)。
我如何比较这两件事?