Warisan Python OOP: Kelas Induk dan Anak
Pelajari warisan dengan Python OOP. Menguasai subkelas, mengganti metode, menggunakan super(), dan pola pewarisan berganda.
Ikhtisar
Warisan adalah salah satu pilar dasar Pemrograman Berorientasi Objek (OOP). Ini adalah mekanisme yang memungkinkan kelas baru (dikenal sebagai anak atau subkelas) untuk mengadopsi atribut dan metode dari kelas yang sudah ada (dikenal sebagai induk atau superkelas). Pola desain ini mendorong penggunaan kembali kode, mengurangi redundansi, dan menetapkan hubungan logis dan hierarkis antara berbagai komponen aplikasi Anda.
Untuk mengimplementasikan pewarisan dengan Python, Anda memasukkan nama kelas induk di dalam tanda kurung selama definisi kelas anak: `kelas Anak(Orang Tua):`. Kelas anak segera mewarisi semua metode dan variabel induknya. Jika anak memerlukan perilaku khusus, ia dapat mengganti metode induk mana pun dengan mendefinisikan ulang metode tersebut menggunakan nama yang sama. Di dalam metode yang diganti, Anda masih bisa memanggil implementasi induknya dengan menggunakan fungsi `super()` bawaan, sehingga memastikan Anda dapat memperluas logika yang sudah ada, bukan mengganti sepenuhnya.
Tidak seperti banyak bahasa yang diketik secara statis, Python secara asli mendukung Warisan Berganda, yang berarti kelas anak dapat mewarisi lebih dari satu kelas induk (misalnya, `kelas SmartDevice(Kamera, Telepon):`). Untuk menyelesaikan metode induk mana yang dijalankan ketika nama bertentangan, Python menggunakan algoritma ketat yang disebut Method Resolusi Order (MRO). Memahami cara menyusun pohon warisan dan menggunakan super() sangat penting untuk merancang arsitektur berorientasi objek yang dapat diperluas.
Kode & Output Eksekusi
Membuat kelas Kendaraan induk dan subkelas Mobil anak yang menggantikan inisialisasi menggunakan super().
class Vehicle:
def __init__(self, brand, year):
self.brand = brand
self.year = year
def display_info(self):
return f"{self.year} {self.brand}"
class Car(Vehicle):
def __init__(self, brand, year, model):
# Call parent constructor
super().__init__(brand, year)
self.model = model
def display_info(self):
# Override parent method and extend it
parent_info = super().display_info()
return f"{parent_info} {self.model}"
my_car = Car("Ford", 2026, "Mustang")
print(my_car.display_info())2026 Ford MustangImplementasi Langkah demi Langkah
- Membuat kelas pengecualian khusus yang mewarisi dari Exception
- Membangun komponen UI (seperti Tombol) yang diwarisi dari Tampilan generik
- Mendefinisikan model basis data hierarki (misalnya, Pengguna, Karyawan, Manajer)
Pertanyaan yang Sering Diajukan
Apa yang super() lakukan dalam subkelas?
super() mengembalikan objek sementara dari kelas induk, memungkinkan Anda memanggil metodenya, yang sangat berguna untuk menginisialisasi bidang induk di __init__.
Bisakah Anda mencegah suatu kelas diwarisi?
Python tidak mendukung kata kunci 'final' seperti Java untuk membatasi warisan. Secara konvensional, kami mendokumentasikan maksud kelas, atau menggunakan pemeriksa tipe dengan anotasi @final dari modul pengetikan.
Topik Terkait
Pengenalan lengkap tentang kelas, objek, pewarisan, dan konsep OOP Python. Buat model data yang kuat dan skalakan aplikasi python Anda.
Polimorfisme OOP PythonKuasai polimorfisme dengan Python. Pelajari cara menulis kode yang fleksibel dan digabungkan secara longgar menggunakan pengetikan bebek, penggantian metode, dan kelas dasar abstrak.
Sumber Daya Python yang Direkomendasikan
Perluas pengetahuan Anda dengan tutorial interaktif terkait, lembar contekan, dan perbandingan kode.
Cara Mengurutkan Daftar dengan Python
Pelajari cara mengurutkan daftar dengan Python menggunakan metode sortir() dan fungsi sortir(). Temukan contoh pengurutan kunci khusus dan urutan terbalik.
Lembar
Panduan referensi lengkap untuk manipulasi string Python. Kuasai pemformatan, pencarian, pemisahan, penggantian, dan pemeriksaan properti string.
Python vs JavaScript: Bahasa Pemrograman Mana yang Terbaik?
Perbandingan komprehensif antara Python dan JavaScript. Jelajahi perbedaan sintaksis, kinerja, kasus penggunaan (backend vs frontend), dan contoh pengkodean.