
Constructor dan Destructor di Python
Constructor dan destructor adalah dua konsep penting dalam pemrograman berorientasi objek (OOP) di Python.
Inheritance (pewarisan) dan polymorphism (polimorfisme) adalah dua konsep utama dalam OOP yang membuat kode lebih fleksibel dan mudah dikembangkan. Dengan memahami kedua konsep ini, kamu bisa membuat program Python yang lebih modular, reusable, dan scalable. Artikel ini akan membahas secara mendalam tentang inheritance dan polymorphism, lengkap dengan contoh, studi kasus, best practice, dan tips untuk pemula.
Inheritance adalah kemampuan sebuah class (child/anak) untuk mewarisi atribut dan method dari class lain (parent/induk). Dengan inheritance, kamu bisa membuat class baru tanpa harus menulis ulang kode yang sama. Konsep ini sangat penting untuk menghindari duplikasi kode dan memudahkan pengembangan aplikasi besar.
Bayangkan kamu punya class Hewan
sebagai induk, lalu membuat class Kucing
dan Anjing
sebagai anak. Semua hewan pasti punya nama dan bisa bersuara, tapi suara kucing dan anjing berbeda. Dengan inheritance, kamu cukup mendefinisikan atribut dan method umum di class induk, lalu class anak bisa menambah atau mengubah perilaku sesuai kebutuhan.
class Hewan:
def __init__(self, nama):
self.nama = nama
def suara(self):
print("Hewan bersuara...")
class Kucing(Hewan):
def suara(self):
print(f"{self.nama} : Meong!")
class Anjing(Hewan):
def suara(self):
print(f"{self.nama} : Guk!")
k1 = Kucing("Mimi")
a1 = Anjing("Doggy")
k1.suara()
a1.suara()
Mimi : Meong!
Doggy : Guk!
Penjelasan:
Kucing
dan Anjing
mewarisi dari Hewan
.suara
di-overwrite sesuai jenis hewan.nama
diwariskan dari class induk.Inheritance bisa bertingkat, misal class C mewarisi dari class B, dan class B mewarisi dari class A.
class A:
def halo(self):
print("Halo dari A")
class B(A):
def salam(self):
print("Salam dari B")
class C(B):
pass
obj = C()
obj.halo()
obj.salam()
Halo dari A
Salam dari B
Python juga mendukung multiple inheritance, yaitu satu class bisa mewarisi dari beberapa class sekaligus.
class Ayah:
def sifat_ayah(self):
print("Tegas")
class Ibu:
def sifat_ibu(self):
print("Penyayang")
class Anak(Ayah, Ibu):
pass
a = Anak()
a.sifat_ayah()
a.sifat_ibu()
Tegas
Penyayang
Tips: Gunakan multiple inheritance dengan hati-hati agar kode tidak membingungkan.
Polymorphism adalah kemampuan object untuk menggunakan method yang sama dengan cara berbeda, tergantung class-nya. Dengan polymorphism, kamu bisa memanggil method yang sama pada object dari class berbeda, dan Python akan otomatis memilih implementasi yang sesuai.
daftar_hewan = [Kucing("Oyen"), Anjing("Blacky")]
for hewan in daftar_hewan:
hewan.suara()
Oyen : Meong!
Blacky : Guk!
Penjelasan:
suara()
bisa dipanggil dengan cara yang sama.Polymorphism juga bisa diterapkan pada function yang menerima object dari class berbeda.
def panggil_suara(hewan):
hewan.suara()
k = Kucing("Milo")
a = Anjing("Bruno")
panggil_suara(k)
panggil_suara(a)
Milo : Meong!
Bruno : Guk!
class Burung(Hewan):
def suara(self):
print(f"{self.nama} : Cuit!")
b = Burung("Cici")
daftar = [k1, a1, b]
for h in daftar:
h.suara()
Mimi : Meong!
Doggy : Guk!
Cici : Cuit!
Misal kamu ingin membuat aplikasi untuk berbagai jenis kendaraan.
class Kendaraan:
def __init__(self, nama):
self.nama = nama
def jalan(self):
print(f"{self.nama} berjalan di jalan raya.")
class Mobil(Kendaraan):
def jalan(self):
print(f"{self.nama} melaju dengan 4 roda.")
class Motor(Kendaraan):
def jalan(self):
print(f"{self.nama} melaju dengan 2 roda.")
daftar_kendaraan = [Mobil("Avanza"), Motor("Vario"), Kendaraan("Sepeda")]
for k in daftar_kendaraan:
k.jalan()
Avanza melaju dengan 4 roda.
Vario melaju dengan 2 roda.
Sepeda berjalan di jalan raya.
Penjelasan:
jalan
, tapi perilakunya berbeda.No | Tips | Penjelasan |
---|---|---|
1 | Gunakan inheritance untuk fitur yang benar-benar umum | Jangan paksa inheritance jika tidak perlu |
2 | Override method dengan hati-hati | Pastikan perilaku sesuai kebutuhan class anak |
3 | Gunakan super() untuk memanggil method parent |
Agar inisialisasi dan resource parent tetap berjalan |
4 | Dokumentasikan class dan method | Agar mudah dipahami tim lain |
5 | Hindari inheritance bertingkat terlalu dalam | Bisa membuat kode sulit dirawat |
super().__init__()
di class turunan.Mobil
mewarisi dari class Ikan
).if-else
untuk tipe object.Q: Apakah satu class bisa punya banyak parent?
A: Bisa, Python mendukung multiple inheritance.
Q: Bagaimana cara memanggil method parent dari child?
A: Gunakan super().nama_method()
.
Q: Apakah semua method parent diwariskan ke child?
A: Ya, kecuali di-override di class child.
Q: Apa beda inheritance dan composition?
A: Inheritance = pewarisan, composition = membangun class dari object lain (lebih fleksibel untuk beberapa kasus).
Q: Apakah polymorphism hanya untuk method yang sama?
A: Ya, polymorphism berlaku jika method punya nama yang sama di class berbeda.
Misal kamu ingin membuat fungsi yang bisa menerima berbagai jenis object dan memanggil method yang sama.
class Dosen:
def sapa(self):
print("Halo, saya dosen.")
class Mahasiswa:
def sapa(self):
print("Halo, saya mahasiswa.")
def sapa_semua(objek_list):
for obj in objek_list:
obj.sapa()
daftar = [Dosen(), Mahasiswa(), Mahasiswa()]
sapa_semua(daftar)
Halo, saya dosen.
Halo, saya mahasiswa.
Halo, saya mahasiswa.
Inheritance dan polymorphism adalah dua pilar utama OOP di Python. Dengan inheritance, kamu bisa membuat class baru dari class yang sudah ada tanpa menulis ulang kode. Dengan polymorphism, kamu bisa membuat kode yang lebih fleksibel dan mudah dikembangkan, karena object dari class berbeda bisa diperlakukan sama jika punya method yang sama.
Teruslah berlatih membuat class dengan inheritance dan polymorphism di berbagai kasus nyata, agar semakin mahir dan siap membangun aplikasi Python yang profesional!
Happy coding!
Constructor dan destructor adalah dua konsep penting dalam pemrograman berorientasi objek (OOP) di Python.
Class dan object adalah pondasi utama dalam pemrograman berorientasi objek (OOP) di Python.
Menulis kode Python bisa dilakukan di mana saja, bahkan di Notepad sekalipun.
Regular Expression (RegEx) adalah salah satu alat paling ampuh dalam pemrograman Python untuk memproses dan memanipulasi teks.