Python OOP Mirası: Ebeveyn ve Çocuk Sınıfları

Python OOP'ta kalıtımı öğrenin. Alt sınıflandırma, geçersiz kılma yöntemleri, super() kullanımı ve çoklu kalıtım kalıplarında uzmanlaşın.

Editör'de deneyin

Genel Bakış

Kalıtım, Nesneye Yönelik Programlamanın (OOP) temel direklerinden biridir. Yeni bir sınıfın (çocuk veya alt sınıf olarak bilinir), mevcut bir sınıfın (ebeveyn veya üst sınıf olarak bilinir) niteliklerini ve yöntemlerini benimsemesine izin veren bir mekanizmadır. Bu tasarım modeli kodun yeniden kullanımını teşvik eder, fazlalığı azaltır ve uygulamanızın farklı bileşenleri arasında mantıksal, hiyerarşik ilişkiler kurar.

Python'da kalıtımı uygulamak için, alt sınıf tanımı sırasında ana sınıfın adını parantez içinde iletirsiniz: `class Child(Parent):`. Alt sınıf, ebeveynin tüm yöntemlerini ve değişkenlerini hemen devralır. Çocuğun özel davranışa ihtiyacı varsa, herhangi bir ana yöntemi aynı adla yeniden tanımlayarak geçersiz kılabilir. Geçersiz kılınan bir yöntemin içinde, yerleşik "super()" işlevini kullanarak ebeveynin uygulamasını çağırabilir, mevcut mantığı tamamen değiştirmek yerine genişletebilmenizi sağlayabilirsiniz.

Statik olarak yazılan birçok dilin aksine, Python yerel olarak Çoklu Kalıtımı destekler; bu, bir alt sınıfın birden fazla üst sınıftan miras alabileceği anlamına gelir (örneğin, 'sınıf SmartDevice(Kamera, Telefon):'). Adlar çakıştığında hangi ebeveyn yönteminin yürütüleceğini çözmek için Python, Yöntem Çözümleme Sırası (MRO) adı verilen katı bir algoritma kullanır. Kalıtım ağaçlarının nasıl yapılandırılacağını ve super() öğesinin nasıl kullanılacağını anlamak, genişletilebilir nesne yönelimli mimariler tasarlamak için çok önemlidir.

Kod ve Yürütme Çıkışı

Super() kullanarak başlatmayı geçersiz kılan bir ana Araç sınıfı ve bir alt Araba alt sınıfı oluşturma.

inheritance.py
Editör'de deneyin
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())
Terminal Çıkışı
2026 Ford Mustang

Adım Adım Uygulama

  • İstisna'dan devralınan özel istisna sınıfları oluşturma
  • Genel bir Görünümden miras alan UI bileşenleri (Düğmeler gibi) oluşturma
  • Hiyerarşik veritabanı modellerinin tanımlanması (örn. Kullanıcı, Çalışan, Yönetici)

Sıkça Sorulan Sorular

Super() alt sınıflandırmada ne yapar?

super(), ana sınıfın geçici bir nesnesini döndürür ve bu nesnenin yöntemlerini çağırmanıza olanak tanır; bu, özellikle __init__'deki ana alanları başlatmak için kullanışlıdır.

Bir sınıfın miras alınmasını önleyebilir misiniz?

Python, kalıtımı kısıtlamak için Java gibi 'final' anahtar kelimesini desteklemez. Geleneksel olarak, sınıf amacını belgeleriz veya yazma modülünden @final ek açıklamalarıyla tür denetleyicileri kullanırız.

İlgili Konular

Önerilen Python Kaynakları

İlgili etkileşimli eğitimler, yardımcı sayfalar ve kod karşılaştırmalarıyla bilginizi genişletin.