Metot Geçersiz Kılmaya Yeniden Bakış
Coddy'nin Python Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 23 / 64.
Polimorfizm, "çok biçim" anlamına gelir ve farklı sınıflardaki nesnelerin aynı yöntem çağrısına farklı şekilde yanıt vermesini sağlar. Yöntem geçersiz kılma bunu mümkün kılar.
İşte bir metodu olan ebeveyn sınıf:
class Animal:
def speak(self):
return "Animal makes a sound"Aynı metodu geçersiz kılan alt sınıflar oluşturun:
class Dog(Animal):
def speak(self):
return "Woof!"
class Cat(Animal):
def speak(self):
return "Meow!"
class Cow(Animal):
def speak(self):
return "Moo!"Her alt sınıf, speak() metodunun kendi uygulamasını sağlar.
Farklı hayvanlardan oluşan bir liste oluşturun:
animals = [Dog(), Cat(), Cow(), Animal()]Tüm nesnelerde aynı yöntemi çağırın:
for animal in animals:
print(animal.speak())Çıktı:
Woof!
Meow!
Moo!
Animal makes a soundBu, polimorfizmin işleyiş hâlidir - aynı yöntem çağrısı, nesnenin gerçek türüne göre farklı davranır.
Polimorfizmi fonksiyonlarla da kullanabilirsiniz:
def make_animal_speak(animal):
print(animal.speak())
dog = Dog()
cat = Cat()
make_animal_speak(dog) # Hav!
make_animal_speak(cat) # Miyav!Fonksiyonun hangi tür hayvan aldığını bilmesine gerek yoktur - sadece speak() fonksiyonunu çağırır ve doğru davranışı elde eder.
Önemli Nokta: Polimorfizm, farklı nesnelere ortak bir arayüz aracılığıyla aynı şekilde davranmanızı sağlar. Metot geçersiz kılma farklı uygulamalar sunarken polimorfizm bunları tek biçimde çağırmanıza olanak tanır. Bu, kodu daha esnek ve genişletilmesini daha kolay hâle getirir.
Görev
OrtaBu meydan okumada, bir araç kalıtım sistemi uygulayacaksın.
Şu dosyaları düzenlemen gerekecek:
vehicle.py: make/model özniteliklerine ve metotlarına sahip temelVehiclesınıfını uygulacar.py:Vehiclesınıfından kalıtım alanCarsınıfını oluşturmotorcycle.py:Vehiclesınıfından kalıtım alanMotorcyclesınıfını oluşturtruck.py:Vehiclesınıfından kalıtım alanTrucksınıfını oluştur
Her dosya, uygulamanı adım adım yönlendirecek ayrıntılı TODO yorumları içerir. Dosyalar arasında gereken import ifadelerine dikkat et ve kalıtım ilişkilerini takip et. driver.py dosyası, uygulamanın tüm araç türlerinde doğru şekilde çalıştığını doğrulayacak test senaryolarını içerir.
Kendin dene
from vehicle import Vehicle
from car import Car
from motorcycle import Motorcycle
from truck import Truck
def vehicle_info(vehicle):
return f"{vehicle.make} {vehicle.model}: {vehicle.start()}, Efficiency: {vehicle.fuel_efficiency()} mpg"
# Farklı araçlarla test et - BU TEST KODUNU DEĞİŞTİRMEYİN
vehicles = [
Car("Toyota", "Camry"),
Motorcycle("Harley", "Davidson"),
Truck("Ford", "F-150"),
Vehicle("Generic", "Vehicle")
]
for v in vehicles:
print(vehicle_info(v))Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Nesne Yönelimli Programlama bölümündeki tüm dersler
1OOP Temelleri
Harici DosyalarOOP'ye GirişSınıflar ve Nesnelerself ParametresiMetotlarÖzniteliklerYapıcı Metot (__init__)Özet - Basit Hesap Makinesi4Kalıtım
Temel Kalıtımsuper() FonksiyonuMetot Geçersiz KılmaÇoklu KalıtımMetot Çözümleme SırasıÖzet - Çalışan Hiyerarşisi7Özel Metotlar
Sihirli Metotlara GirişOperatör Aşırı YüklemeKapsayıcı Sihirli MetotlarıÖzet - Özel Liste10Tasarım Kalıpları Bölüm 1
Tasarım kalıplarına girişSingleton KalıbıFactory KalıbıObserver KalıbıStrategy Kalıbı13Final Meydan Okumaları
E-öğrenme PlatformuBankacılık SistemiOyun Karakteri GeliştirmeAraç Kiralama Servisi5Çok Biçimlilik (Polymorphism)
Metot Geçersiz Kılmaya Yeniden BakışDuck TypingSoyut Sınıflar ve MetotlarArayüz TasarımıÖzet - Şekil Hesaplayıcı8İleri Düzey OOP Kavramları
Kompozisyon ve KalıtımMixinsStatik ve Sınıf MetotlarıSınıf DekoratörleriBağlam Yöneticileri11Tasarım Kalıpları Bölüm 2
Komut KalıbıAdaptör KalıbıDekoratör KalıbıŞablon Metot KalıbıDurum KalıbıKompozit KalıbıKendi başına pratik yap: Online Python derleyicisi