我正在将我的一些类从广泛使用 getter 和 setter 改为使用更加 Python 化的属性。
但是现在我卡住了,因为我以前的一些 getter 或 setter 会调用基类的相应方法,然后执行其他操作。但是如何利用属性来实现这一点呢?如何在父类中调用属性 getter 或 setter?
当然,只要调用属性本身就可以得到无限递归。
class Foo(object):
@property
def bar(self):
return 5
@bar.setter
def bar(self, a):
print a
class FooBar(Foo):
@property
def bar(self):
# return the same value
# as in the base class
return self.bar # --> recursion!
@bar.setter
def bar(self, c):
# perform the same action
# as in the base class
self.bar = c # --> recursion!
# then do something else
print 'something else'
fb = FooBar()
fb.bar = 7