Khi tôi gọi phương thức đệ quy lớp cơ sở từ lớp dẫn xuất, cuộc gọi đệ quy được thực hiện dựa vào phương thức dẫn xuất, thay vì phương thức lớp cơ sở. Làm thế nào tôi có thể tránh được rằng mà không sửa đổi việc triển khai lớp cơ sở (trong ví dụ lớp A)?ghi đè phương thức đệ quy trong python
Dưới đây là một ví dụ
class A(object):
# recursive method
def f(self, x):
print x,
if x < 0:
self.f(x+1)
if x > 0:
self.f(x-1)
if x == 0:
print ""
class B(A):
# Override method
def f(self):
# do some pretty cool stuff
super(B, self).f(25)
if __name__ == "__main__":
A().f(5)
B().f()
Tôi đã có đầu ra này:
5 4 3 2 1 0
25
Traceback (most recent call last):
File "./test.py", line 19, in <module>
B().f()
File "./test.py", line 15, in f
super(B, self).f(25)
File "./test.py", line 9, in f
self.f(x-1)
TypeError: f() takes exactly 1 argument (2 given)
Cảm ơn trước,
Chỉ cần thay đổi tên chức năng của bạn ... – JBernardo