tôi có mã như thế này:Làm thế nào để tránh đệ quy vô hạn với siêu()?
class A(object):
def __init__(self):
self.a = 1
class B(A):
def __init__(self):
self.b = 2
super(self.__class__, self).__init__()
class C(B):
def __init__(self):
self.c = 3
super(self.__class__, self).__init__()
Instantiating B làm việc như mong đợi nhưng instantiating C recursed vô hạn và gây ra một chồng tràn. Làm sao tôi có thể giải quyết việc này?
Trước hết ... gọi init với siêu là một vấn đề lớn mà internet đã quyết định phải tồn tại. Nó hoạt động mà Thomas đang mô tả ... tuy nhiên, tại sao bạn lại chạy siêu với init? Đó không phải là mục đích của nó. (Damn OK là mặc định cho nhập)
Chỉ cần suy nghĩ về điều này ... khi bạn siêu init ... bạn gọi các lớp cơ sở init, có thể ghi đè tất cả các công việc bạn đã làm. Nếu bạn nhấn mạnh vào sử dụng siêu với init, làm điều đó một cách chính xác. –
Giáo sư Ebral, hãy cho chúng tôi biết cách sử dụng đúng cách nếu chúng tôi phải làm như vậy. – nmz787
@ nmz787: gọi siêu nên được thực hiện trước khi thực hiện khởi tạo cục bộ, các câu hỏi sẽ làm theo cách khác xung quanh ... Vâng! Tôi có lẽ nên chỉnh sửa câu hỏi vì đó là thực hành không tốt và không nên để lại làm ví dụ. – kriss