Bir kütüphane yazıyorum ve kütüphaneden nesneleri kullanarak ifadeler yapıyorum. Örneğin, x
ve y
benim kütüphaneden örnekleri vardır ve ben gibi ifadeleri oluşturabilirsiniz:Semptomları kullanarak ifadelerdeki ifadeleri nasıl işlersiniz?
# below is a simplified version of my class
class MySymbol(object):
import random
_random_value = random.randint(1,4)
def __init__(self, value):
self.value = value
def __add__(self, symbol):
return MySymbol(self.value + symbol.value)
def __mul__(self, symbol):
return MySymbol(self.value * symbol.value)
def __repr__(self):
return str(self.value)
def _get_random_value(self):
return self._random_value
x,y = sympy.symbols('x y')
x = MySymbol(9)
y = MySymbol(3)
import sympy
A = sympy.Matrix([[x,y],[x,y]])
B = sympy.Matrix([[x+y,x*y]])
Bu aynı zamanda matris işlemleri için de geçerlidir. BA[0,0]
artık değil tip MySymbol
ait olduğu için ben üzerinde istediğiniz yöntemleri diyemezsin, Şimdi
BA=B*A
print type(BA[0,0])
print type(x*x+y*x+x*x*y) # first element of matrix in *symbolic* form
<class 'sympy.core.numbers.Integer'>
<class '__main__.MySymbol'>
:
sympy.Matrix
sınıf onun kendi türünü
MySymbol
korumak istediğinizde,
sympy.core.numbers.Integer
için bu öğeleri dönüştürür
BA[0,0]._get_random_value() # DOES NOT WORK
>> AttributeError: 'Integer' object has no attribute '_get_random_value'
expression = x*x+y*x+x*x*y
expression._get_random_value() # THIS DOES WORK
>> 4
sympy.Matrix
'dan matris çarpımından nasıl yararlanabilirim, ancak yine de matris öğelerinin sınıf türlerini MySymbol
koruyabilmesine izin veririm? ve hala tüm yöntemlerine (_get_random_value()
gibi) erişilebilsin mi?
. umarım, daha net hale getirmeye yardımcı olur – Sother
MySemini sympy.core.numbers.Integer'den mi devralmak mümkün müdür? –
Bu çözümü hayal ederken sorun yaşıyorum. Ne düşündüğünü yayınlayabilir misin? Ya da "MySymbol" semiri mi, "Miatrix" mi? – Sother