Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Fungsi `super()` Python Mengendalikan Perintah Penyelesaian Berbilang Warisan dan Kaedah (MRO)?
Python's super() dengan Multiple Inheritance
Dalam Python, berbilang warisan melibatkan kelas yang diwarisi daripada berbilang kelas induk. Apabila menggunakan fungsi super() dalam senario sedemikian, ia menjadi penting untuk memahami kelakuannya.
super() dalam Pewarisan Berbilang
super() terutamanya berfungsi dua tujuan :
Dalam coretan kod yang diberikan:
class First(object): def __init__(self): print("first") class Second(object): def __init__(self): print("second") class Third(First, Second): def __init__(self): super(Third, self).__init__() print("that's it")
Apabila objek Ketiga ialah seketika, perkara berikut berlaku:
Ambiguous MRO
Walau bagaimanapun, apabila rantaian warisan menjadi lebih kompleks, mungkin terdapat kekaburan dalam menentukan MRO. Ini berlaku apabila kelas kanak-kanak mewarisi daripada berbilang kelas yang mewarisi daripada kelas asas yang sama. Python menimbulkan ralat dalam kes sedemikian.
Sebagai contoh, pertimbangkan kod berikut:
class First(object): def __init__(self): print("first") class Second(First): def __init__(self): print("second") class Third(First): def __init__(self): print("third")
Apabila cuba mencipta kelas yang mewarisi daripada Kedua dan Ketiga, Python menimbulkan TypeError disebabkan kepada MRO yang samar-samar. Susunan kelas induk dalam senarai warisan adalah penting dan harus konsisten merentas pangkalan kod.
Kesimpulan
Fungsi super() Python ialah alat yang berkuasa untuk mengurus pusaka berbilang. Dengan memahami kelakuannya, anda boleh menyelesaikan konflik kaedah dengan berkesan dan mengekalkan hierarki kelas yang jelas.
Atas ialah kandungan terperinci Bagaimanakah Fungsi `super()` Python Mengendalikan Perintah Penyelesaian Berbilang Warisan dan Kaedah (MRO)?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!