Menu
Coddy logo textTech

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 sound

Bu, 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.

challenge icon

Görev

Orta

Bu meydan okumada, bir araç kalıtım sistemi uygulayacaksın.

Şu dosyaları düzenlemen gerekecek:

  • vehicle.py: make/model özniteliklerine ve metotlarına sahip temel Vehicle sınıfını uygula
  • car.py: Vehicle sınıfından kalıtım alan Car sınıfını oluştur
  • motorcycle.py: Vehicle sınıfından kalıtım alan Motorcycle sınıfını oluştur
  • truck.py: Vehicle sınıfından kalıtım alan Truck sı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))
quiz iconKendini test et

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

Kendi başına pratik yap: Online Python derleyicisi