这个问题与另一个问题类似,不同之处在于基类中的数据成员没有被描述符协议包装。
换句话说,如果我用派生类中的属性覆盖基类的名称,如何访问基类的成员?
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 的分配不起作用。
总而言之,描述符协议似乎不能与继承很好地交互......