我试图创建一个多项式'在python类中,它采用一个以多项式系数作为输入的np数组,并且需要允许这个属性得到一个“get”。和'设置'我试图用装饰器来实现这个目的。但是,当我创建多项式对象的实例化时,好像它没有使用我的@ coefficient.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 属性时,我收到一条错误消息,指出多项式没有属性 order 。
答案 0 :(得分:0)
我找到了我的问题的答案,结果是类需要从对象继承才能使用'setter'和'getter'装饰器,即我的类应该看起来像
class Polynomial(object):
#....
另一个问题回答了这个问题:Why doesn't setter work for me?
我实际上并不知道为什么python中的'new style'类必须从对象继承的细节,如果有人知道确切答案的原因,我将不胜感激。