Je change certaines de mes classes d'une utilisation extensive des getters et setters à une utilisation plus pythonique des propriétés.
Mais maintenant je suis bloqué parce que certains de mes précédents getters ou setters appelleraient la méthode correspondante de la classe de base, puis effectueraient autre chose. Mais comment cela peut-il être accompli avec des propriétés? Comment appeler la propriété getter ou setter dans la classe parent?
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
Foo.bar.fset(self, c)
un passeur hérité? Pourquoi pasFoo.bar.fset(c)
- sans le «moi» - je pensais que c'était implicitement passé?