Tôi đang thay đổi một số lớp của mình từ việc sử dụng rộng rãi các getters và setters sang sử dụng các thuộc tính pythonic hơn.
Nhưng bây giờ tôi bị mắc kẹt vì một số getters hoặc setters trước đây của tôi sẽ gọi phương thức tương ứng của lớp cơ sở và sau đó thực hiện một cái gì đó khác. Nhưng làm thế nào điều này có thể được thực hiện với các thuộc tính? Làm thế nào để gọi thuộc tính getter hoặc setter trong lớp cha?
Tất nhiên chỉ cần gọi thuộc tính chính nó sẽ cho phép đệ quy vô hạn.
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)
trong một setter kế thừa? Tại sao khôngFoo.bar.fset(c)
- không có "cái tôi" - Tôi nghĩ rằng điều này được mặc nhiên thông qua?