Je suis en train de modifier certaines de mes classes pour passer d'une utilisation extensive de getters et setters à une utilisation plus pythique des propriétés.
Mais maintenant je suis coincé parce que certains de mes getters ou setters précédents appelaient la méthode correspondante de la classe de base, puis effectuaient autre chose. Mais comment faire cela avec les propriétés ? Comment appeler le getter ou le setter de la propriété dans la classe mère ?
Bien sûr, le simple fait d'appeler l'attribut lui-même donne une récursion infinie.
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