Как вызвать свойство базового класса, если это свойство перезаписывается в производном классе?

Я изменяю некоторые мои классы с широкого использования геттеров и сеттеров на более питонное использование свойств.

Но теперь я застрял, потому что некоторые из моих предыдущих получателей или установщиков вызывали соответствующий метод базового класса, а затем выполняли что-то еще. Но как это можно сделать с помощью свойств? Как вызвать свойство getter или setter в родительском классе?

Конечно, просто вызов самого атрибута дает бесконечную рекурсию.

<code>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
</code>

Ответы на вопрос(5)

Ваш ответ на вопрос