Python中@setter装饰器能否替换为单条语句?
替换@property.setter为单条语句的实现方案
当然可以做到。property对象的setter方法会返回一个绑定了新赋值逻辑的property实例,我们只需要用一条语句完成绑定即可。
修改后的代码如下:
class D: def __init__(self): self._x = 'Hi' def x(self): return self._x x = property(x) def x(self, value): self._x = value x = x.setter(x) # 替换@x.setter的单条语句
原理说明
这条语句的作用和@x.setter装饰器完全等价:
- 先定义好负责赋值的
x方法 - 调用现有
x(此时是property对象)的setter方法,把新定义的赋值方法传入,得到一个包含了getter和setter的新property对象 - 最后将这个新对象重新赋值给类属性
x,完成属性的读写逻辑绑定
内容的提问来源于stack exchange,提问作者Dietrich Baumgarten
相关产品推荐
相关产品推荐

