Polimorfisme dengan Python (dengan Contoh)

Dalam tutorial ini, kita akan belajar tentang polimorfisme, berbagai jenis polimorfisme, dan bagaimana kita dapat menerapkannya dengan Python dengan bantuan contoh.

Apa itu Polimorfisme?

Arti harfiah dari polimorfisme adalah kondisi kejadian dalam berbagai bentuk.

Polimorfisme adalah konsep yang sangat penting dalam pemrograman. Ini mengacu pada penggunaan entitas tipe tunggal (metode, operator atau objek) untuk mewakili tipe yang berbeda dalam skenario yang berbeda.

Mari kita ambil contoh:

Contoh 1: Polimorfisme pada operator penjumlahan

Kami tahu bahwa +operator digunakan secara ekstensif dalam program Python. Tapi, itu tidak memiliki satu penggunaan.

Untuk tipe data integer, +digunakan operator untuk melakukan operasi penjumlahan aritmatika.

 num1 = 1 num2 = 2 print(num1+num2) 

Oleh karena itu, program di atas menghasilkan 3.

Demikian pula, untuk tipe data string, +operator digunakan untuk melakukan penggabungan.

 str1 = "Python" str2 = "Programming" print(str1+" "+str2) 

Hasilnya, program di atas mengeluarkan Pemrograman Python.

Di sini, kita dapat melihat bahwa satu operator +telah digunakan untuk melakukan operasi yang berbeda untuk tipe data yang berbeda. Ini adalah salah satu kejadian polimorfisme paling sederhana di Python.

Fungsi Polimorfisme dengan Python

Ada beberapa fungsi di Python yang kompatibel untuk dijalankan dengan banyak tipe data.

Salah satu fungsi tersebut adalah len()fungsi. Ini dapat berjalan dengan banyak tipe data dengan Python. Mari kita lihat beberapa contoh kasus penggunaan fungsi tersebut.

Contoh 2: Fungsi polimorfik len ()

 print(len("Programiz")) print(len(("Python", "Java", "C"))) print(len(("Name": "John", "Address": "Nepal"))) 

Keluaran

 9 3 2 

Di sini, kita dapat melihat bahwa banyak tipe data seperti string, list, tuple, set, dan dictionary dapat bekerja dengan len()fungsi tersebut. Namun, kita dapat melihat bahwa itu mengembalikan informasi spesifik tentang tipe data tertentu.

Polimorfisme dalam fungsi len () dengan Python

Kelas Polimorfisme dengan Python

Polimorfisme adalah konsep yang sangat penting dalam Pemrograman Berorientasi Objek.

Untuk mempelajari lebih lanjut tentang OOP dengan Python, kunjungi: Pemrograman Berorientasi Objek Python

Kita dapat menggunakan konsep polimorfisme sambil membuat metode kelas karena Python mengizinkan kelas yang berbeda memiliki metode dengan nama yang sama.

Kemudian kita dapat menggeneralisasi pemanggilan metode ini dengan mengabaikan objek yang sedang kita kerjakan. Mari kita lihat contohnya:

Contoh 3: Polimorfisme dalam Metode Kelas

 class Cat: def __init__(self, name, age): self.name = name self.age = age def info(self): print(f"I am a cat. My name is (self.name). I am (self.age) years old.") def make_sound(self): print("Meow") class Dog: def __init__(self, name, age): self.name = name self.age = age def info(self): print(f"I am a dog. My name is (self.name). I am (self.age) years old.") def make_sound(self): print("Bark") cat1 = Cat("Kitty", 2.5) dog1 = Dog("Fluffy", 4) for animal in (cat1, dog1): animal.make_sound() animal.info() animal.make_sound() 

Keluaran

Meong saya seekor kucing. Nama saya Kitty. Umur saya 2,5 tahun. Meong Bark Saya adalah seekor anjing. Nama saya Fluffy. Umur saya 4 tahun Kulit

Di sini, kami telah membuat dua kelas Catdan Dog. Mereka berbagi struktur yang serupa dan memiliki nama metode info()dan make_sound().

Namun, perhatikan bahwa kita belum membuat superclass umum atau menghubungkan kelas-kelas tersebut dengan cara apapun. Bahkan kemudian, kita dapat mengemas dua objek yang berbeda ini ke dalam tupel dan mengulanginya menggunakan variabel hewan yang umum. Itu mungkin karena polimorfisme.

Polimorfisme dan Warisan

Seperti dalam bahasa pemrograman lain, kelas anak dalam Python juga mewarisi metode dan atribut dari kelas induk. Kita dapat mendefinisikan kembali metode dan atribut tertentu secara spesifik agar sesuai dengan kelas anak, yang dikenal sebagai Pengganti Metode .

Polimorfisme memungkinkan kita untuk mengakses metode dan atribut yang ditimpa ini yang memiliki nama yang sama dengan kelas induk.

Mari kita lihat contohnya:

Contoh 4: Penimpaan Metode

 from math import pi class Shape: def __init__(self, name): self.name = name def area(self): pass def fact(self): return "I am a two-dimensional shape." def __str__(self): return self.name class Square(Shape): def __init__(self, length): super().__init__("Square") self.length = length def area(self): return self.length**2 def fact(self): return "Squares have each angle equal to 90 degrees." class Circle(Shape): def __init__(self, radius): super().__init__("Circle") self.radius = radius def area(self): return pi*self.radius**2 a = Square(4) b = Circle(7) print(b) print(b.fact()) print(a.fact()) print(b.area()) 

Keluaran

Lingkaran I adalah bentuk dua dimensi. Kotak memiliki setiap sudut sama dengan 90 derajat. 153.93804002589985

Di sini, kita dapat melihat bahwa metode seperti __str__(), yang belum diganti dalam kelas anak, digunakan dari kelas induk.

Karena polimorfisme, penerjemah Python secara otomatis mengenali bahwa fact()metode untuk objek a(kelas Persegi) diganti. Jadi, ini menggunakan yang ditentukan di kelas anak.

Di sisi lain, karena fact()metode untuk objek b tidak diganti, metode ini digunakan dari kelas Bentuk Orang Tua.

Polimorfisme dalam kelas orang tua dan anak dengan Python

Catatan : Metode Overloading , cara untuk membuat beberapa metode dengan nama yang sama tetapi argumen berbeda, tidak dimungkinkan dengan Python.

Artikel yang menarik...