Apakah Perbezaan Antara 'super' dan Explicit Superclass __init__()?
Dalam Python, kata kunci super menyediakan cara yang mudah untuk akses kaedah kelas induk. Mari kita terokai penggunaannya dan membezakannya dengan kaedah eksplisit untuk memanggil kaedah __init__ ibu bapa.
Permulaan Kelas Induk Eksplisit
class Child(SomeBaseClass): def __init__(self): SomeBaseClass.__init__(self)
Bentuk pewarisan ini secara eksplisit memanggil __init__ kaedah kelas induk, SomeBaseClass. Ia menggabungkan kelas anak dengan ketat kepada ibu bapa tertentu dan menganggap bahawa kaedah __init__ ibu bapa akan sentiasa wujud.
Permulaan 'super'
class Child(SomeBaseClass): def __init__(self): super().__init__()
Kata kunci super membenarkan untuk proses permulaan yang lebih fleksibel. Ia memastikan bahawa kaedah __init__ kelas induk yang mengikuti kelas anak dalam Perintah Penyelesaian Kaedah (MRO) digunakan. Ini membolehkan kemungkinan mempunyai berbilang warisan atau menambah kelas asas tambahan tanpa menjejaskan pengamulaan kanak-kanak.
Python 2 vs. Python 3
Dalam Python 2, sintaks untuk menggunakan super adalah berbeza:
super(Child, self).__init__()
Walau bagaimanapun, dalam Python 3, ini boleh dipermudahkan kepada:
super().__init__()
Kelebihan Menggunakan 'super'
Kesimpulan
Sementara SomeBaseClass yang eksplisit.__init__(self ) panggilan mungkin mencukupi dalam senario pewarisan mudah, ia boleh menjadi mengehadkan dalam kelas yang lebih kompleks hierarki. Kata kunci super memberikan fleksibiliti yang lebih besar, keserasian ke hadapan dan sokongan untuk suntikan pergantungan. Oleh itu, adalah disyorkan untuk menggunakan super untuk memulakan kelas induk, kerana ia meningkatkan kebolehselenggaraan dan kebolehgunaan semula kod.
Atas ialah kandungan terperinci Warisan Python: Apakah Perbezaan Antara Panggilan `super()` dan Explicit Superclass `__init__()`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!