python属性getter有什么用处吗?

python属性getter有什么用处吗?,python,Python,我想知道对于类属性显式使用getter decorator是否有任何用处: 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 A类: @财产 def

我想知道对于类属性显式使用getter decorator是否有任何用处:

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
A类:
@财产
def p(自我):
返回自我
@p、 塞特
def p(自身,val):
断言p<1000
self.\u p=val
@p、 吸气剂
def p(自我):
返回自我

为什么我要在这里显式地使用getter?它不是使p(self)中的代码无法访问吗?基本上,使用它有什么实际原因吗?

当您从父类继承属性并希望重写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'

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

在您的特定情况下没有任何原因,但请考虑一种更复杂的方法。即延迟初始化(例如,第一次调用时生成的返回值)。例如,到数据库的延迟连接我可以想象这个用例,但我似乎可以将代码放在p的@property定义下,而不是显式定义p.getter