【发布时间】:2009-06-29 10:03:17
【问题描述】:
这个问题和this other one类似,不同的是基类中的数据成员没有被描述符协议包裹。
换句话说,如果我用派生类中的属性覆盖基类的名称,我如何访问基类的成员?
class Base(object):
def __init__(self):
self.foo = 5
class Derived(Base):
def __init__(self):
Base.__init__(self)
@property
def foo(self):
return 1 + self.foo # doesn't work of course!
@foo.setter
def foo(self, f):
self._foo = f
bar = Base()
print bar.foo
foobar = Derived()
print foobar.foo
请注意,我还需要定义一个 setter,否则基类中 self.foo 的赋值不起作用。
总而言之,描述符协议似乎不能很好地与继承交互......
【问题讨论】:
标签: python inheritance overloading descriptor