Я пытаюсь создать базовую среду математического программирования, что-то вроде мудреца, но очень базовую.Я определил класс functionClass
и подкласс poly
, который наследует атрибут functionClass.x
от своего базового класса.
Метод базового класса poly
__init__()
принимает список (соответствующий коэффициентам многочлена) с именем coeffs
, кроме использования functionClass
'* x
.
По какой-то странной причине я получаю сообщение RecursionError: maximum recursion depth exceeded
при первом создании объекта.Я немного озадачен, потому что все это произошло в методе poly
__init__()
.... быстрый указатель был бы очень полезен!
Вот что у меня так далеко:
import math
import operator
class functionClass:
functions = {0: math.sin, 1: math.cos, 2: math.tan, 3: math.exp, 4: 'identity'}
def __init__(self,option_code=0,x=0):
self._option_code = option_code
self._x = x
@property
def code(self):
return self._option_code
@code.setter
def code(self,new_code):
self._option_code = new_code
@property
def x(self):
return self._x
@x.setter
def x(self,new_x):
self._x = new_x
def f_x(self):
if self.code in self.functions:
return self.functions[self.code](self.x)
def __add__(self,other):
sum = self.f_x() + other.f_x()
return sum
def __sub__(self,other):
difference = self.f_x() - other.f_x()
return difference
def __mul__(self,other):
product = self.f_x() * other.f_x()
return product
def __truediv__(self,other):
quotient = self.f_x() / other.f_x()
return quotient
#class poly(functionClass)-------------------------------------------------------------------------------------------------------
class poly(functionClass):
def __init__(self,coeffs,x):
self.coeffs = coeffs
print(self.coeffs)
self.degree = len(coeffs)
functionClass.x = x
@property
def coeffs(self):
return self.coeffs
@coeffs.setter
def coeffs(self,new_coeffs):#TAKES IN A LIST
self.coeffs= new_coeffs
#test this
def p_x(self):
sum = 0
for i in range(self.degree):
sum = sum + (self.coeffs[i] * math.pow(x,i))
return sum
def __add__(self,other):
pass
def __sub__(self,other):
pass
def __mul__(self,other):
pass
Когда я запускаю i=poly([1,1,1],1)
, я получаю это:
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
i = poly([1,1,1],1)
File "C:\Python\numInt.py", line 76, in __init__
self.coeffs = coeffs
File "C:\Python\numInt.py", line 88, in coeffs
self.coeffs= new_coeffs
File "C:\Python\numInt.py", line 88, in coeffs
self.coeffs= new_coeffs
File "C:\Python\numInt.py", line 88, in coeffs
self.coeffs= new_coeffs
[Previous line repeated 989 more times]
RecursionError: maximum recursion depth exceeded
Это не является частью какой-либо домашней работы или чего-то в этом роде, я просто работаю над улучшением своих навыков в Python.