如何在没有 Setter 的情况下使用 Getter
How to Use Getter Without Setter
我正在使用 python 2.7.
我有以下 class:
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
我的理解是,通过使用 属性 装饰器,我实质上是为我的两个 class 属性分别建立了一个 getter 方法。由于我没有创建 setter 方法,所以我希望将 "True" 分配给 x.pos_a 会引发错误。错误应该是我无法设置有 getter 方法但没有 setter 方法的属性的值。相反,该值设置为 "True" 并且打印没有问题。我如何实施以达到该结果?我希望用户能够 "get" 这些值,但他们不应该能够设置它们。
您需要从 object
继承才能使属性正常工作。
class Test(object):
...
那是因为属性是用描述符实现的,只有 new-style classes 支持描述符。
我正在使用 python 2.7.
我有以下 class:
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
我的理解是,通过使用 属性 装饰器,我实质上是为我的两个 class 属性分别建立了一个 getter 方法。由于我没有创建 setter 方法,所以我希望将 "True" 分配给 x.pos_a 会引发错误。错误应该是我无法设置有 getter 方法但没有 setter 方法的属性的值。相反,该值设置为 "True" 并且打印没有问题。我如何实施以达到该结果?我希望用户能够 "get" 这些值,但他们不应该能够设置它们。
您需要从 object
继承才能使属性正常工作。
class Test(object):
...
那是因为属性是用描述符实现的,只有 new-style classes 支持描述符。