我正在使用python 2.7.
我有以下课程:
class Test: def __init__(self): self._pos_a = ['test_1'] self._pos_b = ['test_2'] @property def pos_a(self): return self._pos_a @property def pos_b(self): return self._pos_b if __name__ == "__main__": x = Test() x.pos_a = True print x.pos_a >>> True
我的理解是,通过使用属性装饰器,我基本上为我的两个类属性建立了一个getter方法.既然我没有创建一个setter方法,我希望我对x.pos_a的"True"赋值会引发错误.错误应该是我不能设置有getter方法但没有setter方法的属性的值.相反,该值设置为"True",它打印没有问题.我如何实现这一目标以实现这一结果?我希望用户能够"获取"这些值,但他们不应该设置它们.
您需要从object
属性继承才能正常工作.
class Test(object): ...
那是因为属性是用描述符实现的,只有新式类支持描述符.