首页 > 解决方案 > python属性getter有什么用吗?

问题描述

我想知道对于类属性显式使用 getter 装饰器是否有任何用途:

class A:
    @property
    def p(self):
       return self._p

    @p.setter
    def p(self, val):
       assert p < 1000
       self._p = val

    @p.getter
    def p(self):
       return self._p

为什么我会在这里明确使用吸气剂?它不会使 p(self) 中的代码无法访问吗?基本上,有任何实际的理由使用它吗?

标签: python

解决方案


当您从父类继承属性并想要覆盖 getter 时,它很有用:

class Parent:
    @property
    def prop(self):
        return 'Parent'

    @prop.setter
    def prop(self, value):
        print('prop is now', value)


class Child(Parent):
    @Parent.prop.getter
    def prop(self):
        return 'Child'

Foo.prop这将创建一个具有不同 getter 函数但相同的 setter(和删除器)的副本。


推荐阅读