Создание пользовательского объекта символаPython

Программы на Python
Ответить
Anonymous
 Создание пользовательского объекта символа

Сообщение Anonymous »

Я выполняю некоторые символьные вычисления с помощью Sympy, но мне нужно определить некоторые пользовательские объекты. До сих пор я использовал преимущества символов Sympy, определяя новый класс

Код: Выделить всё

class CustomSymbol(sym.Symbol):
def __init__(self, *args, **kwargs):
super().__init__(args, kwargs)
self.custom_attribute = True
таким образом я могу повторно использовать большой объем кода. Тем не менее, мне пришлось перезаписать некоторые функции и определить собственные Add, Mul, Pow и т. д.
Теперь проблема в следующем:

Код: Выделить всё

from sympy import *

class CustomSymbol(Symbol):
def __pow__(self, other):
return CustomPow(self, other)

class CustomPow(Pow):
pass

a = CustomSymbol('a')
x = a**2 * a**3
type(x)
этот код возвращает, что тип x — это Pow Sympy, а не CustomPow. По сути, это потому, что во внутреннем коде Sympy по существу вычисляет Pow(a, 2+3).
Тот факт, что Sympy использует этот подход вместо гораздо более гибкого подхода, такого как вычисление a**( 2+3) и позволяя решать, как управлять возведением в степень, наводит меня на мысль, что, возможно, существует определенный способ определения пользовательских символов.
Итак, мой вопрос в том, как следует подойти к созданию CustomSymbol сорт? Есть ли обходной путь написанной мною проблемы, который не требует существенного переписывания всей библиотеки Sympy?

Подробнее здесь: https://stackoverflow.com/questions/779 ... bol-object
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»