この質問はこの他の質問と似ていますが、基本クラスのデータ メンバーが記述子プロトコルによってラップされていないという違いがあります。
つまり、派生クラスのプロパティで名前をオーバーライドしている場合、基本クラスのメンバーにアクセスするにはどうすればよいでしょうか?
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
セッターも定義する必要があることに注意してください。そうしないと、基本クラスでの self.foo の割り当てが機能しません。
全体として、記述子プロトコルは継承とうまくやり取りしていないようです...