Object Oriented Programlama # 10 - Python Dersleri (Tutorials)
Merhabalar
Python programlama derslerin bu bölümünde kalıtımın bir diğer konusu olan super anahtar kelimesini öğreneceğiz.
Özellikle Object Oriented dersleri birbirinin devamı şeklinde olduğundan bu derse geçmeden önce onlara bakmanız şiddetle tavsiye edilir.
Bir önceki dersimizde overriding konusunu görmüştük. overriding sayesinde miras alan sınıf, miras alınan sınıftaki bir metotla aynı isimde metot oluşturabiliyordu.
overriding kullanıldığında miras alınan sınıftaki metot kısmen iptal ediliyordu. İki sınıfta da aynı isimde metot olduğunda mirası alanın metodu çalıştırılıyordu.
Hatırlamak adına görelim :
Temel yani miras alınan sınıfımız aşağıdaki gibidir :
personel sınıfından miras alan ogretmen sınıfımızın son hali ise aşağıdaki gibidir :
Görüldüğü gibi hem personel sınıfında hem de ogretmen sınıfında init() fonksiyonu bulunmaktadır. Ancak çağırdığımızda
verilen mesajdan da anlaşıldığı üzere ogretmen sınıfındaki init() fonksiyonu çalıştırılmıştır.
super anahtar kelimesi
Önceki derslerimizde ısrarla object oriented programlama tekniğinin kod tekrarının önüne geçilip en verimli şekilde kod yazmayı hedeflediğini söylemiştik.
Buna rağmen ogretmen sınıfında init() fonksiyonu aynı kodları tekrardan yazmak suretiyle baştan yazıldı. Bu durum aslında OOP mantığına kısmen ters düşmektedir.
İşte bizi bu durumdan super anahtar kelimesi kurtaracaktır. Bu anahtar kelime sayesinde kod tekrarı yapmak zorunda kalmayacağız.
Farkı göstermek adına ogretmen sınıfının değişmemiş halini görelim :
Şimdi de super anahtar kelimesi kullanılmış haline bakalım :
super() anahtar kelimesini temel sınıfı temsil eden bir kelime gibi düşünebilirsiniz.
super().init(...)
dediğimizde aslında biz miras aldığımız temel sınıfın init() fonksiyonunu kullanacağız diyoruz ve miras alınan sınıftaki init() fonksiyonuna uyacak şekilde parametreleri veriyoruz.
ogretmen sınıfındaki init() fonksiyonu 4 parametreli olduğundan
self.dersler = dersler
diyerek 4.parametrenin atamasını da ogretmen sınıfındaki init() fonksiyonuna bırakmış oluyoruz. Görüldüğü gibi sadece farklı olan parametreyi yazarak init() fonksiyonunu baştan tasarlamış olduk.
super() anahtar kelimesini kullanarak
self.ad = ad self.soyad = soyad self.maas = maas
kodlarını baştan yazmak zorunda kalmadık. Böyle 3 özellik için konunun önemi anlaşılmayabilir ama siz ana sınıfta 100 tane özellik olduğunu farz ederseniz o zaman programcıya sağladığı kolaylık çok daha iyi anlaşılacaktır.
Dersi bitirmeden önce bir nesne üzerinde test edelim :
Görüldüğü gibi iki sınıftaki init fonksiyonunun çalıştığına dair mesajımızı almış olduk.
super() anahtar kelimesi hem kodu efektif kullanmamızı sağlarken hem de okunabilirliği artırmaktadır.
Şimdilik bu kadar.
Umarım faydalı bir çalışma olmuştur.
Teşekkürler.
Kaynak belirtilmeyen görseller bana aittir. The pictures without source in the post is belong to me
Ya bu süper zaten süper bir anahtar kelimedir.
Bu arada etikette sınır tanınmamış maşallah, tüm token sistemlerini kapsayan bir ortak etiket bulunmazsa yüzlerce etiket kullanmak gerekecek bu gidişle :))
Evet dediğiniz gibi super hocam :) Ortak etiket fikrine bayıldım acayip harika pratik bir çözüm olurdu. Bunun için de hemen token üretirlerdi herhalde :)
You got a 41.53% upvote from @minnowvotes courtesy of @elektroyazilim!
Mükemmel bir fikir.
Posted using Partiko Android
This post has received a 12.15 % upvote from @boomerang.
You got a 25.00% upvote from @whalecreator courtesy of @elektroyazilim! Delegate your Steem Power to earn 100% payouts.
You got a 33.33% upvote from @whalepromobot courtesy of @elektroyazilim!
You got a 70.38% upvote from @brupvoter courtesy of @elektroyazilim!
You got a 98.57% upvote from @minnowvotes courtesy of @elektroyazilim!
You got a 96.01% upvote from @luckyvotes courtesy of @elektroyazilim!