Я пытаюсь создать класс 'Polynomial' в python, он принимает массив np с полиномиальными коэффициентами в качестве входных данных и должен позволить этому атрибуту иметь свойства 'get' и 'set', я пытаюсьчтобы добиться этого с помощью декораторов.Однако, когда я создаю экземпляр объекта Polynomial, кажется, что он не использует мой метод @ coefficients.setter, потому что он не печатает строку 'Установка коэффициентов' и не использует метод @ coefficients.getter.поскольку он не печатает свою строку либо.Возможно, я неправильно использую декораторы?Я использую spyder в качестве своей IDE, может ли это быть причиной проблемы?
class Polynomial ():
__coefficients = None
def __init__ ( self , coeffs ):
self.coefficients = coeffs
#INTERFACES FOR ATTRIBUTE : __coefficients
@property
def coefficients ( self ):
print('getting coefficients')
return self . __coefficients
@coefficients.setter
def coefficients ( self , coeffs ):
print('setting coefficients')
self . __coefficients = np . array ( coeffs )
self . __order = self . __coefficients . size
@coefficients . deleter
def coefficients ( self ):
del self . __coefficients
Итак, в качестве примера:
\>>fx = Polynomial([0,0,1])
не будет выводить «установка коэффициентов»и
\>>fx.coefficients
не будет выводить «получение коэффициентов» также, когда я пытаюсь использовать атрибут order в других методах, я получаю сообщение об ошибке, говорящее, что Polynomial не имеет атрибута заказ .