Object Oriented Programming-Inheritance ve Subclass

Jale Yerdelen
2 min readOct 13, 2022

--

  • Inheritance, kelime anlamı olarak miras almak demektir. Miras aldığımız class’ın fonksiyonlarını kullanabiliriz.
  • Kod tekrarı yapmamak için Python’da inheritance method kullanılır.
  • Şimdi yeni bir class yaratacağız ve parantez içine yazdığımız yere miras alacağımız fonksiyonun adını yazacağız. Yani o class’ın fonksiyonlarını kullanabiliriz artık.
print(help(Developer)) çıktısı
  • Python help kullanarak kodumuz hakkındaki tüm bilgileri aldık. Method resolution order yazan yere bakarsak sırasıyla şöyle okuyor kodu; ilk Developer class’ına bakıyor ve bir şey bulamazsa miras aldığı yere bir üste Personel class’ına çıkıyor. Orada da bulamazsa builtins.object’e bakıyor.
  • Aşağıdaki örnekte, Personel class’ının fonksiyonunu kullanarak dev_1'nın maaşına zam yaptık.
  • Şimdi ise dev_1'nın class’ını değiştirelim ve ne etki edecek görelim.
  • Gördüğümüz üzere yukarıdaki kodda Personel class’ımızın içinde bulunan raise_percent’a bir etki etmedi. Demek ki yarattığımız başka class’lar miras aldığı fonksiyonunun içindekilere etki etmiyor.
  • Diyelim ki Developer’ların kullandığı program dillerini attribute olarak eklemek istiyoruz. Bir önceki örnekte Personel sınıfını etkilemediğimizden bahsetmiştim o zaman yapmamız gereken Personel sınıfını etkileyecek, tetikleyip çalışmasını sağlayacak bir fonksiyon yazmak.
  • Kodda değişiklik yapacağız. Normalde 18. satırdaki gibi kullanılmıyor onun yerine super() method’ı kullanılıyor. Super method’ı bizim ana class’ımıza(Personel) erişmemizi sağlıyor.
  • Inheritance’a daha da ileri örneklerle devam edelim. Müdürlerin ve onların çalışanları olduğu senaryo üretelim ve onun üzerinden ilerleyelim.
  • Bizim amacımız man_1 de değişken var[dev_1, dev_2] ve man_2 de değişken yok. Biz bu değişkeni daha sonradan eklemek istiyoruz. Bu senaryoya göre yazdık kodumuzu.
  • 23. satırda default olarak None verdik. Çünkü eğer biz self.employees = employees dersek bu sefer man_2 daki koda list ekleyemeyiz. if’de yazmış olduğumuz kod man_2 için else ise man_1 için.
  • Şimdi uzun bir kod paylaşacağım bol yorum satırlı bu yorum satırlarını okursanız kodu daha iyi anlayabilirsiniz.

Isinstance()

  • Bir instance’ın class’ın bir nesnesi mi diye kontrol ediyor. 1.parametre kontrol etmek istediğimiz instance, ikinci parametre ise sorguladığımız sınıf. Bu sınıf sadece bir sınıfın değil, ana sınıfımızı da(Personel) sorgulasak yine bize True dönecek.

Issublass()

  • Bir class’ın alt sınıfı olup olmadığını öğrenmek için kullanırız. 1.parametre kontrol etmek istediğimiz alt sınıf, 2.parametre ise onun bir üst sınıfıdır.

--

--

No responses yet