Python - Method Overriding
Halo, pemrogram beraspirasi! Hari ini, kita akan menyelam ke atas topik yang menarik di dalam Python: Method Overriding. Jangan khawatir jika anda baru mengenali pemrograman; Saya akan membimbing anda melalui konsep ini langkah demi langkah, seperti yang saya lakukan untuk pelbagai pelajar dalam tahun penyediaan saya. Jadi, mari kita mulakan perjalanan Python ini bersama-sama!
Apa itu Method Overriding?
Sebelum kita melompat ke atas detilnya, mari kita mula dengan analogi yang ringkas. Bayangkan anda memiliki resepi untuk kue coklat chip yang anda warisi dari penyucu anda. Ini adalah "dasar" resepi anda. Sekarang, anda memutuskan untuk menambahkan rakaman anda sendiri dengan menggunakan coklat hitam bukannya coklat susu. Anda secara efektif "menggantikan" sebahagian daripada resepi asal sementara menjaga dasar yang sama. Ini adalah sama seperti yang kita lakukan dalam pemrograman dengan method overriding!
Di dalam Python, method overriding terjadi apabila kelas anak memberikan implementasi khusus untuk method yang sudah ditakrifkan di atas kelas induknya. Ini adalah cara untuk menyuaikan atau memperpanjang tingkah laku method yang diwarisi.
Mengapa Gunakan Method Overriding?
- Penyesuaian: Ia membolehkan anda untuk mengubah tingkah laku method yang diwarisi untuk sesuai keperluan khusus kelas anak.
- Polimorfisme: Ia membolehkan anda untuk menggunakan nama method yang sama untuk kelas berbeza, menggalakkan penggunaan semula kode dan keanjalan.
- Specialisasi: Kelas anak boleh menspesialisasikan tingkah laku method kelas induk.
Sekarang, mari kita lihat ini dalam tindakan dengan beberapa contoh kod!
Method Overriding di dalam Python
Contoh Asas
Mari mula dengan contoh ringkas untuk melihat method overriding:
class Animal:
def make_sound(self):
print("Hewan itu membuat bunyi")
class Dog(Animal):
def make_sound(self):
print("Anjing itu berbual: Woof! Woof!")
class Cat(Animal):
def make_sound(self):
print("Kucing itu berbulu: Meow!")
# Mencipta contoh
animal = Animal()
dog = Dog()
cat = Cat()
# Memanggil method make_sound
animal.make_sound() # Output: Hewan itu membuat bunyi
dog.make_sound() # Output: Anjing itu berbual: Woof! Woof!
cat.make_sound() # Output: Kucing itu berbulu: Meow!
Dalam contoh ini, kita ada kelas dasar Animal
dengan method make_sound
. Kelas Dog
dan Cat
mewarisi dari Animal
tetapi menggantikan method make_sound
dengan implementasi khusus mereka.
Apabila kita memanggil make_sound()
pada setiap contoh, Python menggunakan implementasi yang paling khusus yang tersedia. Ini adalah sebabnya anjing itu beralak dan kucing itu berbulu bukannya hanya membuat bunyi hewan generik.
Menggunakan super() di atas Method Overriding
Bila-bila masa, anda mahu untuk memperpanjang fungsi kelas induk method daripada menggantikannya sepenuhnya. Ini di mana fungsi super()
menjadi berguna. Mari lihat contoh:
class Vehicle:
def __init__(self, brand):
self.brand = brand
def start(self):
print(f"Kenderaan {self.brand} itu dimulakan.")
class Car(Vehicle):
def __init__(self, brand, model):
super().__init__(brand)
self.model = model
def start(self):
super().start()
print(f"{self.brand} {self.model} itu sedia untuk dijalankan!")
# Mencipta contoh Car
my_car = Car("Toyota", "Corolla")
# Memanggil method start
my_car.start()
Output:
Kenderaan Toyota itu dimulakan.
Toyota Corolla itu sedia untuk dijalankan!
Dalam contoh ini, kelas Car
memperpanjang method start
kelas Vehicle
. Ia pertama memanggil method start
kelas induk menggunakan super().start()
, dan kemudian menambah fungsiannya sendiri.
Method Dasar yang Boleh Digantikan
Python memiliki beberapa method khas (juga dikenali sebagai method penyihir atau method dunder) yang anda boleh gantikan untuk menyuaikan tingkah laku kelas anda. Berikut adalah atas nama beberapa method yang sering digantikan:
Method | Keterangan |
---|---|
__init__(self, ...) |
Method konstruktor, dipanggil apabila objek diciptakan |
__str__(self) |
Kembalikan representasi rentetan objek |
__repr__(self) |
Kembalikan representasi rentetan terperinci objek |
__len__(self) |
Definisikan tingkah laku untuk fungsi len()
|
__getitem__(self, key) |
Definisikan tingkah laku untuk operasi penakalan |
__setitem__(self, key, value) |
Definisikan tingkah laku untuk pengisytiharan kepada nilai yang ditaaklukan |
__iter__(self) |
Kembalikan pengejar untuk objek |
__eq__(self, other) |
Definisikan tingkah laku untuk operator kesamaan (==) |
__lt__(self, other) |
Definisikan tingkah laku untuk operator kurang daripada (<) |
__add__(self, other) |
Definisikan tingkah laku untuk operator penambahan (+) |
Mari lihat contoh penggantian method __str__
:
class Book:
def __init__(self, title, author, pages):
self.title = title
self.author = author
self.pages = pages
def __str__(self):
return f"'{self.title}' oleh {self.author} ({self.pages} halaman)"
# Mencipta contoh Buku
my_book = Book("Odyssey Python", "Cody McPythonface", 342)
# Mencetak objek buku
print(my_book)
Output:
'Odyssey Python' oleh Cody McPythonface (342 halaman)
Dengan menggantikan method __str__
, kita telah menyuaikan bagaimana objek Book
kita diwakili sebagai rentetan. Ini adalah sangat berguna apabila anda mencetak objek atau menggunakan fungsi str()
di atas itu.
Penutup
Method overriding adalah ciri kuat di dalam Python yang membolehkan anda untuk menyuaikan tingkah laku method yang diwarisi. Ia adalah konsep utama dalam pemrograman berorientasi objek yang menggalakkan penggunaan semula kode dan keanjalan. Ingat, dengan kuasa besar datang tanggungjawab besar (ya, saya hanya mengutip Spider-Man di atas tutorial Python). Gunakan method overriding dengan bijak untuk mencipta kod yang bersih, efisien, dan mudah diurus.
Apabila anda teruskan perjalanan Python anda, anda akan menemui banyak peluang untuk menggunakan method overriding. Latihan, eksperimen, dan jangan takut untuk membuat kesilapan – itulah cara kita semua belajar dan tumbuh sebagai pemrogram.
Selamat mengkod, pemrogram Python masa depan! ??
Credits: Image by storyset