我敢肯定,您以前听说过,但自Python 2.3
apply起已弃用 八年了
。不要使用它。您对的使用
locals()也与Python的Zen背道而驰-显式优于隐式。如果您真的喜欢增加缩进量,则无需创建一次性对象,只需执行
if True: @property def foo(self): return self._foo @foo.setter def foo(self, val): self._foo = val
不会滥用
locals,使用
apply,需要创建一个额外的对象,或者之后需要添加一行以
foo =foo()使其更难于看到该块的结尾。它对于您的老式使用方式同样有效
property-就
foo = property(fget,fset)像平常一样。
如果要覆盖任意子类中的属性,则可以使用类似以下的配方。
如果子类知道属性的定义位置,请执行以下操作:
class ATimesTwo(A): @A.foo.setter def foo(self, val): self._foo = val * 2



