Bazı sınıflarımı, alıcıların ve ayarlayıcıların yoğun kullanımından, özelliklerin daha pitonik kullanımına değiştiriyorum.
Ama şimdi sıkıştım çünkü önceki alıcılarımdan veya ayarlayıcılarımdan bazıları temel sınıfın karşılık gelen yöntemini çağıracak ve sonra başka bir şey gerçekleştirecek. Fakat bu, özelliklerle nasıl başarılabilir? Üst sınıfta özellik alıcı veya ayarlayıcı nasıl çağrılır?
Tabii ki sadece niteliğin kendisini çağırmak sonsuz özyineleme sağlar.
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)
kalıtsal bir ayarlayıcıyı çağırmalıyım ? Neden olmasınFoo.bar.fset(c)
- "benlik" olmadan - Bunun dolaylı olarak geçtiğini sanıyordum?