Hướng dẫn super __init__ in python - ở trên __init__ trong python
Lý do chúng tôi sử dụng 4là để các lớp con có thể đang sử dụng nhiều kế thừa hợp tác sẽ gọi hàm hàm cha mẹ tiếp theo chính xác trong Thứ tự phân giải phương thức (MRO). Show Nội dung chính
Trong Python 3, chúng ta có thể gọi nó như thế này:
Trong Python 2, chúng tôi được yêu cầu sử dụng nó như thế này:
Không có siêu, bạn bị hạn chế về khả năng sử dụng nhiều kế thừa:
Tôi giải thích thêm dưới đây.
Nếu Python không có super 5với 4, trong đó sử dụng các lớp hiện tại để xác định các lớp tiếp theo của 5để tìm kiếm trong MRO.Những lời phê bình về những câu trả lời khác:câu hỏi chính tắc, Làm thế nào để sử dụng 'siêu' trong Python? , trong đó thể hiện tiêm phụ thuộc và hợp tác nhiều thừa kế . Nếu Python không có superNhững lời phê bình về những câu trả lời khác: 4(cách nó được triển khai trong C, trừ một số hành vi kiểm tra và dự phòng và được dịch
sang Python):
Phê bình cho một câu trả lời khác
Trong Python 3, chúng ta có thể gọi nó như thế này: 4đối tượng, chúng tôi sẽ phải viết mã thủ công này ở mọi nơi (hoặc tạo lại nó!) Để đảm bảo rằng chúng tôi gọi phương thức tiếp theo phù hợp trong Thứ tự giải quyết phương pháp!Trong Python 2, chúng tôi được yêu cầu sử dụng nó như thế này: Không có siêu, bạn bị hạn chế về khả năng sử dụng nhiều kế thừa: 0làm cho hàm gọi đóng một lớp) và đối số đầu tiên cho hàm đó, là đối tượng hoặc lớp thông báo cho nó Phương pháp giải quyết thứ tự (MRO) để sử dụng.Tôi giải thích thêm dưới đây.sử dụng 4với các phương thức tĩnh là không thể .Những lời phê bình về những câu trả lời khác:
Trong Python 3, chúng ta có thể gọi nó như thế này: 4không phải là tránh viết lớp cha. Vấn đề là đảm bảo rằng phương thức tiếp theo trong dòng theo thứ tự độ phân giải phương thức (MRO) được gọi. Điều này trở nên quan trọng trong nhiều kế thừa.Trong Python 2, chúng tôi được yêu cầu sử dụng nó như thế này:
Không có siêu, bạn bị hạn chế về khả năng sử dụng nhiều kế thừa:
Tôi giải thích thêm dưới đây. 3sử dụng siêu, 4không:
Sự khác biệt chính trong mã này là bạn có được một lớp về mình trong 5không gọi phương thức UserDependency:
Tôi minh họa sự khác biệt này trong một câu trả lời tại câu hỏi chính tắc, Làm thế nào để sử dụng 'siêu' trong Python? , trong đó thể hiện tiêm phụ thuộc và hợp tác nhiều thừa kế . 6, vì 3sử dụng 4,
nên!:
0Phê bình cho một câu trả lời khácTrong Python 3, chúng ta có thể gọi nó như thế này: 1Trong Python 2, chúng tôi được yêu cầu sử dụng nó như thế này: Không có siêu, bạn bị hạn chế về khả năng sử dụng nhiều kế thừa: 2Tôi giải thích thêm dưới đây.hoàn toàn sai. 4chúng ta hãy tìm kiếm phụ huynh tiếp theo trong MRO (xem phần đầu tiên của câu trả lời này) cho các lớp con. Nếu bạn nói rằng 4chúng ta đang ở trong phương thức của cá thể con, thì
nó sẽ tìm kiếm phương thức tiếp theo trong dòng (có thể là phương thức này) dẫn đến đệ quy, có thể gây ra lỗi logic (trong ví dụ của người trả lời) hoặc 1khi độ sâu đệ quy là vượt quá. 3Sự khác biệt chính trong mã này là bạn có được một lớp về mình trong |