Я хотел бы определить пользовательские функции Sympy , которые не могут быть напрямую оценены, но я хочу иметь возможность вычислить некоторые вещи. Например, модульные остатки. Вот моя попытка кода: < /p>
Код: Выделить всё
from sympy import Function
class Foo(Function):
@classmethod
def eval(cls, n):
pass
def __mod__(self, modulus: int) -> int:
n, = self.args
return (n + 1) % modulus
print(Foo(7) % 3)
# 2
print((Foo(7) + 1) % 3)
# Mod(Foo(7) + 1, 3)
print((Foo(7) + 1) % 3 == 0)
# False
so foo (7) % 3 работает, как и ожидалось, но (foo (7) + 1) % 3 не так, я хотел Sympy , чтобы заметить, что он может вычислять (a + b) % 3 , вычислив % 3 и b % 3 . Есть ли способ реализовать это? Возможно, мне нужно быть более умным и написать новую функцию, которая проходит символическое дерево формулы? Или, может быть, я пойду на это неправильно? Я также открыт для других библиотек Python (я только что догадался, что Sympy может быть хорошим для использования). Но где мы все еще можем рассчитать некоторые свойства, такие как модульные остатки. См., Например,
https://www.sligocki.com/2022/06/21/bb-6-2-t15.html
Подробнее здесь:
https://stackoverflow.com/questions/797 ... -functions