python属性获取器有什么用吗?

stu*_*ter 5 python

我想知道是否有显式使用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
Run Code Online (Sandbox Code Playgroud)

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

Ara*_*Fey 4

当您从父类继承属性并想要覆盖 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'
Run Code Online (Sandbox Code Playgroud)

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