Python:\uuuu setattr\uuuuu运算符重载

Python:\uuuu setattr\uuuuu运算符重载,python,operator-overloading,Python,Operator Overloading,我制作了一个Poly类,它对多项式执行不同的重载操作 如果试图向多项式对象添加新属性(通过定义新属性或重新绑定现有属性),我希望引发AssertionError 在setattr中如何执行此操作?您也可以尝试使用slots功能-它将引发属性错误 class Test(object): __slots__ = ['var'] def __init__(self, n): self.var = n y = Test(1) print y.var y.var = 2

我制作了一个Poly类,它对多项式执行不同的重载操作

如果试图向多项式对象添加新属性(通过定义新属性或重新绑定现有属性),我希望引发AssertionError


setattr中如何执行此操作?

您也可以尝试使用slots功能-它将引发属性错误

class Test(object):
    __slots__ = ['var']
    def __init__(self, n):
        self.var = n

y = Test(1)
print y.var
y.var = 2
print y.var
y.z = 4    
print y.z
这就是你需要的吗

class CONST(object):
    FOO = 1234

    def __setattr__(self, *_):
        raise AssertionError

const = CONST()
print const.FOO    # 1234
const.FOO = 4321   # AttributeError