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()