Kata polimorfisme pada Python dapat berarti “banyak bentuk”, dan dalam semua pemrograman berorientasi object kata ini mengacu pada metode/fungsi/operator dengan nama yang sama yang dapat dijalankan pada banyak object atau class.
Polimorfisme Pada Fungsi
Contoh fungsi Python yang dapat digunakan pada object yang berbeda adalah fungsi len()
.
Untuk string, maka fungsi len()
ini akan mengembalikan jumlah karakter yang ada pada string tersebut.
Contoh:
x = "Halo Dunia!"
print(len(x))
Output:
11
Tuple
Untuk tuple, maka fungsi len()
ini akan mengembalikan jumlah item dalam tuple.
Contoh:
mytuple = ("apel", "pisang", "ceri")
print(len(mytuple))
Output:
3
Dictionary
Untuk dictionary, maka fungsi len()
ini akan mengembalikan jumlah pasangan key/value dalam dictionary.
Contoh:
dictini = {
"brand": "Ford",
"model": "Mustang",
"year": 2023
}
print(len(dictini))
Output:
3
Polimorfisme Pada Class
Polimorfisme juga sering digunakan dalam penggunaan fungsi dalam class, di mana kita dapat memiliki banyak class dengan nama fungsi yang sama.
Misalnya, kita memiliki tiga class: Mobil
, Kapal
, dan Pesawat
, dan mereka semua memiliki fungsi yang disebut move()
.
Contoh:
class Mobil:
def __init__(self, merek, model):
self.merek = merek
self.model = model
def move(self):
print("Berkendara!")
class Kapal:
def __init__(self, merek, model):
self.merek = merek
self.model = model
def move(self):
print("Berlayar!")
class Pesawat:
def __init__(self, merek, model):
self.merek = merek
self.model = model
def move(self):
print("Terbang!")
mobil1 = Mobil("Ford", "Mustang") #Membuat class Mobil
kapal1 = Kapal("Ibiza", "Touring 20") #Membuat class Kapal
pesawat1 = Pesawat("Boeing", "747") #Membuat class Pesawat
for x in (mobil1, kapal1, pesawat1):
x.move()
Output:
Berkendara!
Berlayar!
Terbang!
Seperti diperlihatkan pada for loop di bagian akhir, dengan memakaia konsep polimorfisme maka kita dapat mengeksekusi fungsi yang sama untuk ketiga class yang berbeda.
Polimorfisme Pada Class Warisan
Bagaimana dengan class induk yang mempunyai pewarisan class anak, seperti pada konsep Inheritance?
Bisakah kita menggunakan polimorfisme pada class induk dan class anak?
Jawabannya adalah kita bisa menggunakan polimorfisme pada class induk dan class anak. Jika kita menggunakan contoh di atas dan membuat class induk disebut Kendaraan
, dan membuat Mobil
, Kapal
, Pesawat
sebagai class anak dari Kendaraan.
Class anak akan mewarisi fungsi pada class Kendaraan
, tetapi akan menulis ulang atau menimpa implementasi fungsi pada class induk.
Contoh:
class Kendaraan:
def __init__(self, merek, model):
self.merek = merek
self.model = model
def move(self):
print("Jalan!")
class Mobil(Kendaraan):
pass
class Kapal(Kendaraan):
def move(self):
print("Berlayar!")
class Pesawat(Kendaraan):
def move(self):
print("Terbang!")
mobil1 = Mobil("Ford", "Mustang") #Membuat objek Mobil
kapal1 = Kapal("Ibiza", "Touring 20") #Membuat objek Kapal
pesawat1 = Pesawat("Boeing", "747") #Membuat objek Pesawat
for x in (mobil1, kapal1, pesawat1):
print(x.merek)
print(x.model)
x.move()
Output:
Ford
Mustang
Jalan!
Ibiza
Touring 20
Berlayar!
Boeing
747
Terbang!
Class anak mewarisi properti dan fungsi dari class induk.
Pada contoh di atas Anda dapat melihat bahwa class Mobil
tidak mempunyai implementasi atau kosong, tetapi mewarisi properti merek
, model
, dan fungsi move()
dari class Kendaraan
.
Class Kapal
and Pesawat
juga mewarisi properti merek
, model
, dan fungsi move()
dari class Kendaraan
, tetapi keduanya menimpa atau menulis ulang fungsi move()
pada class induknya.
Dengan konsep polimorfisme kita dapat mengeksekusi fungsi yang sama untuk semua class.
Tutorial sebelumnya : Python Iterator
Tutorial setelahnya : Python Scope
Semua Tutorial Python : Tutorial Python