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!

Python - Method Overriding

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?

  1. Penyesuaian: Ia membolehkan anda untuk mengubah tingkah laku method yang diwarisi untuk sesuai keperluan khusus kelas anak.
  2. Polimorfisme: Ia membolehkan anda untuk menggunakan nama method yang sama untuk kelas berbeza, menggalakkan penggunaan semula kode dan keanjalan.
  3. 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