Polimorfisme Python

Polimorfisme Python

Perkenalan

Polimorfisme adalah aspek penting lainnya dari pemrograman berorientasi objek. Tidak ada penggemar Warcraft, itu tidak ada hubungannya dengan mengubah orang menjadi domba. Itu akan jauh lebih keren. Sebaliknya, polimorfisme memungkinkan metode dan fungsi untuk menggunakan kelas dengan fungsi yang sama dengan cara yang sama.

Polimorfisme mengurangi jumlah kode yang perlu Anda tulis dengan menghilangkan redundansi dengan cara yang logis dan bermakna. Itu bergantung pada Anda, programmer, menjadi pintar dalam desain dan memanfaatkan kesamaan Anda pada objek.

Apa itu polimorfisme?

Polimorfisme adalah salah satu hal yang sulit didefinisikan dalam satu kata atau frasa. Istilah ini mengambil bentuk yang sedikit berbeda dalam bahasa pemrograman yang berbeda, membuatnya sedikit lebih sulit untuk dijabarkan secara ringkas. Secara umum, dan dalam Python, itu adalah kemampuan beberapa objek berbeda yang berasal dari kelas yang berbeda untuk digunakan dengan cara yang sama.

Untuk menggunakan contoh mobil yang telah bekerja dengan panduan ini, bayangkan Anda perlu menulis fungsi yang memanggil maju kedepan Metode pada semua jenis mobil yang dilewati. Setiap objek yang dibuat dari kelas "mobil" asli atau salah satu subclass yang memperpanjangnya harus memiliki a maju kedepan metode, bahkan jika telah ditimpa untuk melakukan sesuatu yang sedikit berbeda di beberapa subclass. Ini berarti bahwa melalui polimorfisme, Anda dapat menulis satu fungsi yang mengambil objek dan panggilan "mobil" maju kedepan. Karena semua objek yang dipakai dari subclass "mobil" masih secara teknis "mobil" objek dan memiliki semua sifat aslinya dalam beberapa bentuk atau lainnya, ini akan berhasil.

Harap dicatat bahwa spesifikasi satu superclass tunggal untuk digunakan sebagai jenis objek tidak sepenuhnya diperlukan dalam Python. Python tidak diketik dengan kuat, jadi Anda tidak perlu secara eksplisit mendefinisikan jenis variabel mana yang diambil suatu metode atau fungsi. Dalam bahasa seperti Java, ini berperan dalam bagaimana perilaku polimorfisme. Namun, di Python, merupakan ide yang baik untuk memikirkannya di sepanjang garis ini untuk memastikan bahwa objek yang Anda lewati semua akan memiliki metode atau properti yang digunakan.

Menggunakannya di Python

Sekarang, akan sangat membantu melihat semua ini beraksi. Ini tidak rumit seperti yang mungkin Anda pikirkan sekarang. Pertama, pastikan Anda mengatur dengan kelas contoh. Jika Anda belum memilikinya, mereka tepat di bawah.

Mobil kelas (objek): def __init __ (self, make = 'ford', model = 'pinto', tahun = '1971', mileage = 253812, color = 'oranye'): self.__make = buat diri.__model = Model Self.__year = tahun diri.__mileage = jarak tempuh diri.__color = color def set_make (self, make): self.__make = buat def get_make (self): return self.__make def set_model (self, model): self.__model = model def get_model (self): return self.__model def set_year (self, year): self.__year = tahun def get_year (self): return self.__year def set_mileage (self, mileage): self.__mileAge = jarak tempuh def get_mileage (self): return self.__mileage def set_color (self, color): self.__color = color def get_color (self): return self.__color def move_forward (self, speed): cetak (" %s Anda bergerak maju pada %s" %(self.__model, speed)) def move_backward (self, speed): print ("bergerak mundur pada % s" % speed) kelas musclecar (mobil): def __init __ (self, make = 'ford', model = 'mustang', tahun = tahun = '1965', jarak tempuh = 54032, warna = 'biru', hp = 325): super ().__init __ (Make, Model, Year, Mileage, Color) Self.__hp = hp def set_hp (self, hp): self.__hp = hp def get_hp (self): return self.__hp def drag_race (self, lawan): if (self.__hp> lawan.get_hp ()): kembalikan "Anda menang!"lain: kembalikan" kamu kalah!"def trade_up (self, year, color): super ().set_year (tahun) super ().set_color (warna) super ().set_mileage (0) 

Dengan pengaturan kelas demo, Anda dapat menguji fungsi cepat yang menggunakan polimorfisme untuk menelepon maju kedepan.

newMusclecar = musclecar () newcar = car () def Go_25 (car_object): car_object.move_forward ("25mph") go_25 (newcar) go_25 (newMusclecar) 

Kedua panggilan fungsi berperilaku persis sama, meskipun mereka dilewatkan berbagai objek yang dibuat dari kelas yang berbeda. Berkat polimorfisme, Anda tidak perlu menulis dua fungsi yang berbeda dan dapat menggunakan sifat yang sama dari objek untuk hanya menulis satu fungsi.

Coba timpa salah satu maju kedepan Metode di kelas "musclecar". Jalankan fungsi lagi, dan lihat apa yang terjadi.

 class musclecar (mobil): ... def move_forward (self, speed): cetak (" %s Anda yang luar biasa meraung di jalan di %s" %(self.__model, kecepatan))… 

Saat fungsi memanggil maju kedepan Metode pada objek mobil otot, masih berfungsi dengan sempurna, dan versi yang ditimpa dari metode ini digunakan.

Menutup pikiran

Polimorfisme kedengarannya seperti konsep yang sangat kompleks, tetapi namanya agak salah arah. Konsep itu sendiri tidak terlalu mengintimidasi, dan bahkan membantu menyederhanakan struktur keseluruhan kode Anda.

Tema umum dalam pemrograman berorientasi objek adalah penghapusan redundansi melalui kode yang dapat digunakan kembali dan beradaptasi. Polimorfisme adalah bagian penting dari gambar itu.

Latihan

  1. Gunakan kelas contoh untuk membuat objek "mobil" dan objek "musclecar".
  2. Buat fungsi yang dapat berinteraksi dengan kedua jenis objek "mobil".
  3. Hubungi fungsi Anda dua kali, meneruskannya kedua objek.
  4. Mengesampingkan salah satu metode di kelas musclecar. Pastikan untuk tidak mengubah parameter yang diterima secara drastis.
  5. Hubungi Fungsi Anda Lagi.
  6. Buat kelas baru yang mewarisi dari kelas "mobil".
  7. Instantiate Objek baru dari kelas yang baru Anda buat. Lewati objek ke fungsi Anda.

Tutorial Linux Terkait:

  • Pengantar Otomatisasi Linux, Alat dan Teknik
  • Hal -hal yang harus diinstal pada ubuntu 20.04
  • Cara Membangun Aplikasi Tkinter Menggunakan Objek Berorientasi…
  • Cara menulis ekstensi nautilus dengan nautilus-python
  • Hal -hal yang harus dilakukan setelah menginstal ubuntu 20.04 FOSSA FOSSA Linux
  • Mengkonfigurasi ZFS di Ubuntu 20.04
  • Menguasai loop skrip bash
  • Bagaimana bekerja dengan WooCommerce Rest API dengan Python
  • Mint 20: Lebih baik dari Ubuntu dan Microsoft Windows?
  • EEPROM CH341A Programmer - Baca dan tulis data untuk chip di…