【问题标题】:How to Use Getter Without Setter如何在没有 Setter 的情况下使用 Getter
【发布时间】:2017-06-11 09:18:40
【问题描述】:

我正在使用 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 方法,我希望我将“True”分配给 x.pos_a 会引发错误。错误应该是我无法设置有getter方法但没有setter方法的属性的值。相反,该值设置为“True”并且打印没有问题。我如何实现这一点以达到这个结果?我希望用户能够“获取”这些值,但他们不应该能够设置它们。

【问题讨论】:

    标签: python python-2.7 properties python-2.x getter-setter


    【解决方案1】:

    您需要从object 继承才能使属性正常工作。

    class Test(object):
        ...
    

    这是因为属性是使用描述符实现的,并且只有 new-style classes 支持描述符。

    【讨论】:

      猜你喜欢
      • 2022-07-23
      • 1970-01-01
      • 1970-01-01
      • 2021-12-07
      • 2019-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多