Memanfaatkan Kaedah Kelas Induk daripada Kelas Anak dalam Python
Apabila mereka bentuk hierarki objek, selalunya perlu menggunakan kaedah daripada kelas induk dalam kelas terbitan. Dalam bahasa seperti Perl dan Java, kata kunci "super" memudahkan perkara ini. Walau bagaimanapun, dalam Python, pendekatannya nampaknya berbeza.
Rujukan Kelas Induk Eksplisit
Dalam Python, nampaknya menamakan kelas induk secara eksplisit adalah satu-satunya cara untuk memanggil kaedahnya dari kanak-kanak. Contohnya, jika kelas induk Foo mengandungi kaedah frotz, Bar kelas anak perlu merujuknya sebagai Foo::frotz().
Batasan dan Kebimbangan
Pendekatan ini boleh menimbulkan cabaran dalam hierarki yang kompleks di mana kanak-kanak mungkin tidak selalu mengetahui kelas yang menentukan kaedah yang diwarisi. Ini boleh membawa kepada isu penyelenggaraan dan kebolehbacaan.
Fungsi Super()
Nasib baik, Python 2.2 dan kemudiannya memperkenalkan fungsi super() untuk mengatasi pengehadan ini. super() membolehkan anda mengakses kaedah kelas induk secara langsung. Berikut ialah contoh:
class Foo: def frotz(self): return "Baz" class Bar(Foo): def frotz(self): # Call the parent class's frotz method using super() return super().frotz() + " Quux"
Dengan menggunakan super().frotz(), Bar kelas anak boleh mengakses kaedah frotz kelas induknya Foo.
Gaya Baharu Kelas
Untuk versi Python sebelum 3.0, anda mesti secara eksplisit memilih untuk menggunakan kelas gaya baru. Dalam kes ini, sintaksnya berbeza sedikit:
class Foo(Bar): def baz(self, arg): return super(Foo, self).baz(arg)
Dalam versi lama ini, super mengambil dua argumen: nama kelas anak (mis., Foo) dan objek contoh (mis., diri).
Atas ialah kandungan terperinci Bagaimanakah saya Boleh Memanggil Kaedah Kelas Induk dari Kelas Kanak-kanak dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!