Kaedah yang mengatasi Python adalah ciri pengaturcaraan berorientasikan objek yang membolehkan subclass menyediakan pelaksanaan khusus kaedah yang telah ditakrifkan dalam superclassnya. Apabila kaedah dalam subclass mempunyai nama yang sama, parameter yang sama, dan jenis pulangan yang sama sebagai kaedah dalam superclassnya, kaedah dalam subclass dikatakan untuk mengatasi kaedah dalam superclass.
Tujuan utama kaedah utama adalah untuk membolehkan subclass mewarisi dari superclass tetapi memberikan pelaksanaan tersuai sendiri untuk tingkah laku tertentu. Apabila kaedah yang ditindas dipanggil dari dalam subkelas, ia akan melaksanakan kaedah seperti yang ditakrifkan dalam subkelas, dan bukannya yang ada dalam superclass.
Di Python, kaedah yang mengatasi dilaksanakan secara langsung dalam subkelas dengan menentukan kaedah dengan nama yang sama dengan kaedah dalam superclass. Tidak ada kata kunci khusus yang diperlukan untuk menunjukkan bahawa kaedah sedang ditindih, yang berbeza dari beberapa bahasa pengaturcaraan lain seperti Java, di mana anda akan menggunakan anotasi @Override
.
Kaedah yang mengatasi dan kaedah beban adalah kedua-dua konsep dalam pengaturcaraan berorientasikan objek, tetapi mereka melayani tujuan yang berbeza dan dilaksanakan secara berbeza, terutama di Python.
Kaedah yang mengatasi adalah mengenai menyediakan pelaksanaan khusus dalam subkelas kaedah yang telah ditakrifkan dalam superclassnya. Ia digunakan untuk mengubah atau memperluaskan tingkah laku kaedah superclass dalam subclass.
Kaedah berlebihan , sebaliknya, merujuk kepada menentukan pelbagai kaedah dalam kelas yang sama dengan nama yang sama tetapi parameter yang berbeza. Dalam bahasa seperti Java atau C, ini digunakan untuk membolehkan kaedah untuk berkelakuan berbeza berdasarkan bilangan atau jenis argumen yang diserahkan kepadanya. Walau bagaimanapun, Python tidak menyokong kaedah yang berlebihan dalam erti kata tradisional kerana ia tidak menganggap bilangan atau jenis argumen apabila menyelesaikan kaedah yang hendak dipanggil. Sebaliknya, Python hanya menyimpan definisi terkini kaedah.
Untuk mencapai sesuatu yang serupa dengan kaedah yang berlebihan dalam Python, anda boleh menggunakan argumen lalai atau senarai hujah yang berubah-ubah, atau anda mungkin menggunakan satu kaedah yang memeriksa jenis dan bilangan argumennya dan berkelakuan sewajarnya.
Ringkasnya, kaedah yang mengatasi adalah mengenai polimorfisme dan warisan, yang membolehkan kelas yang berbeza bertindak balas terhadap kaedah yang sama dengan panggilan yang berbeza, sementara kaedah yang berlebihan (dalam bahasa yang menyokongnya) adalah mengenai membuat kaedah yang berkongsi nama yang sama tetapi mengendalikan input yang berbeza. Pendekatan Python terhadap kaedah yang berlebihan adalah lebih lanjut mengenai fleksibiliti dalam pengendalian hujah dan bukannya terlalu banyak.
Kaedah Mengatasi menawarkan beberapa faedah dalam pengaturcaraan berorientasikan objek:
Apabila melaksanakan kaedah yang mengatasi Python, terdapat beberapa kesilapan yang biasa untuk dielakkan:
Melupakan untuk memanggil kaedah superclass : Jika niatnya adalah untuk memperluaskan tingkah laku kaedah superclass dan bukannya menggantikannya sepenuhnya, penting untuk memanggil kaedah superclass menggunakan super()
. Lupa berbuat demikian boleh menyebabkan kehilangan fungsi penting.
<code class="python">class Superclass: def method(self): print("Superclass method") class Subclass(Superclass): def method(self): super().method() # Don't forget this print("Subclass method")</code>
__init__
, __str__
, dan lain -lain) yang digunakan untuk melaksanakan overloading pengendali dan fungsi lain. Apabila mengatasi kaedah ini, penting untuk memahami tujuan dan tingkah laku mereka untuk mengelakkan pelaksanaan yang salah yang boleh memecahkan tingkah laku objek yang diharapkan.__init__
: Apabila mengatasi kaedah __init__
dalam subclass, penting untuk memastikan kaedah superclass __init__
dipanggil untuk memulakan dengan betul atribut superclass. Ini sering dilakukan dengan memanggil super().__init__()
pada permulaan kaedah __init__
subclass.Dengan mengelakkan kesilapan-kesilapan yang sama ini, pemaju dapat memastikan bahawa kaedah mereka mengatasi pelaksanaan dalam Python adalah berkesan, dikekalkan, dan selari dengan amalan terbaik dalam pengaturcaraan berorientasikan objek.
Atas ialah kandungan terperinci Apakah kaedah yang mengatasi python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!