Tôi có một hệ thống phân cấp hạng A < - B < - C, trong B, tôi cần một số chế biến trong các nhà xây dựng, vì vậy tôi đã đưa ra mã này từ bài đăng này: Understanding Python super() with __init__() methodsLỗi độ sâu đệ quy tối đa trong Python khi gọi init của siêu.
#!/usr/bin/python
class A(object):
def __init__(self, v, v2):
self.v = v
self.v2 = v2
class B(A):
def __init__(self, v, v2):
# Do some processing
super(self.__class__, self).__init__(v, v2)
class C(B):
def hello():
print v, v2
b = B(3, 5)
print b.v
print b.v2
c = C(1,2)
print c
Tuy nhiên, tôi có một lỗi thời gian chạy từ lần đệ quy tối đa vượt quá
File "evenmore.py", line 12, in __init__
super(self.__class__, self).__init__(v, v2)
RuntimeError: maximum recursion depth exceeded while calling a Python object
Điều gì có thể sai?
'super (B, self)'. – ekhumoro
Hoặc nếu bạn có thể sử dụng Python 3, chỉ cần 'super()' (Python 3 điền vào các đối số tự động kỳ diệu). – ShadowRanger