Python Alt Sınıflar

Python'da bir sınıfın benzer özelliklere sahip alt sınıfları oluşturulabilir. Miras alma (inheritance) olarak bilinen bu yöntemle, örnek alınan sınıfa ait tüm özellikler ve yöntemler yeni tanımlanan sınıfta da bulunur.

PYTHON Kodu

class Kisi:
  def __init__(self, isim, yas):
    self.isim = isim
    self.yas = yas

class Ogrenci(Kisi):
  pass

p1 = Ogrenci("Murat", 36)
print(p1.yas)
Yukarıdaki örnekte Ogrenci isimli bir sınıf oluşturulmuş ve bu sınıfın Kisi sınıfının alt sınıfı olduğu sınıfın sol tarafında parantez içinde sınıf adı yazılarak belirtilmiştir.

__init__() Fonksiyonunu Kullanmak

Bir önceki dersimizde bu fonksiyonun sınıfların temel yapıcı fonksiyonu olduğundan bahsetmiştik. Yeni bir nesne yaratıldığında öncelikle çalıştırılırlar. Alt sınıflarda da bu fonksiyon kullanılabilir. Ancak kullanılırsa miras aldığı sınıfa ait __init__() fonksiyonu geçersiz olacaktır.

PYTHON Kodu

class Kisi:
  def __init__(self, isim, yas):
    self.isim = isim
    self.yas = yas

class Ogrenci(Kisi):
  def __init__(self, isim, sinif):
     self.isim = isim
     self.sinif = sinif

p1 = Ogrenci("Murat", "9/A")
print(p1.sinif)
Yukarıdaki örnekte Ogrenci sınıfı içindeki yas özelliğini kaldırarak sınıf özelliği ekledik ve ekrana yazdırdık. Eğer örnek aldığı sınıfa ait __init__() fonksiyonunun da geçerli olmasını istiyorsak aşağıdaki kodu kullanabiliriz:

PYTHON Kodu

class Kisi:
  def __init__(self, isim, yas):
    self.isim = isim
    self.yas = yas

class Ogrenci(Kisi):
  def __init__(self, isim, yas, sinif):
     Kisi.__init__(self, isim, yas)
     self.sinif = sinif

p1 = Ogrenci("Murat", 36, "9/A")
print(p1.sinif)
Alt sınıfın __init__() fonksiyonunda yer vereceğimiz <sınıf>.__init__(...), önceki sınıfa ait isim ve yas özelliklerinin de Ogrenci sınıfı için kullanılmasını sağlamıştır.

Yukarıda örneği alınan sınıfın adını yazmak yerine super() fonksiyonu kullanılabilir. Yani yukarıdaki örnek için super().__init__(self, isim, yas) şeklinde kullanım da doğrudur.

UYARI: Alt sınıflarda kullandığınız fonksiyon/yöntem ya da özellikler her zaman miras aldığı sınıfın özelliklerini gölgeleyecek ve üstüne yazacaktır.

PYTHON Kodu

class Kisi:
  def __init__(self, isim, yas):
    self.isim = isim
    self.yas = yas
  def yazdir(self):
    print("Hoş geldin", self.isim)

class Ogrenci(Kisi):
  def __init__(self, isim, yas, sinif):
     Kisi.__init__(self, isim, yas)
     self.sinif = sinif
  def yazdir(self):
     print("Hoş geldin, sevgili öğrencimiz", self.isim)

p1 = Ogrenci("Murat", 36, "9/A")
p1.yazdir()