私のいくつかのクラスを、ゲッターとセッターの広範な使用から、プロパティのよりPython的な使用に変更しています。
しかし、以前のゲッターまたはセッターの一部が基本クラスの対応するメソッドを呼び出してから、別のことを実行するため、今は行き詰まっています。しかし、これはどのようにプロパティで達成できますか?親クラスでプロパティゲッターまたはセッターを呼び出す方法は?
もちろん、属性自体を呼び出すだけで、無限の再帰が得られます。
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
Foo.bar.fset(self, c)
継承されたセッターを呼び出す必要があるのはなぜですか?なぜFoo.bar.fset(c)
-「自己」なしで-これは暗黙のうちに渡されると思いましたか?