Я пишу несколько тестов для своего 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
Возможно, я мог бы сравнить только выражения, но это кажется мне рискованным (если только кто-то с большим опытом в этом не убедит меня в обратном).
Как мне сравнить эти две вещи?