我想知道是否有显式使用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)中的代码无法访问?基本上,有什么实际的理由使用它吗?
当您从父类继承属性并想要覆盖 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(和删除器)的副本。