Python Dilinde ‘Kalıtım’ Yapısı (Inheritance)

Türkçe karşılığı miras olan bu yapı, anlamından da anlaşılacağı üzere bir özelliği ‘kalıtmak’ için kullanılır. Kalıtımı öncelikle somutlaştırmak istiyorum:

Kaynak

Örneğin yeşil renkli bireylerimizin, ebeveynlerinden gelen DNA dizilimi bulunur. Bu dizilimleri de haliyle bir sonraki nesillere aktarma şansına sahiptirler. Mutasyonları vs. göz ardı edersek bu özellik aktarılmaya devam eder ve torun bireyler de dahil olmak üzere bu özellik bulunur. Şimdi asıl konumuza başlayabiliriz:

Projemizde mağazadaki ürünler üzerinden gideceğiz. Bu ürünler, sistemde ürün kategorisi, ürün barkodu, ürün fiyatı ve satış adedi kaydı tutuluyor. Ancak kalıtımı bunun neresinde kullanacağız ? Bir sonraki adıma geçmeden biraz düşünmenizi tavsiye ederim.

Her ne kadar aşağıdaki yöntemin alternatifleri bulunsa da sandalyenin bacak uzunluğu kaydı tutulurken, battaniyenin de tutulmasının önüne geçebiliriz. Bacağı bulunan battaniye yoksa tabi!

Kodlarımıza geçebiliriz. Kaynak kodlarına ekteki linkten ulaşabilirsiniz.

Orders sınıfının içine __init__() fonksiyonuyla beraber self parametresini ekledik. __init__() fonksiyonunu çağırıldığı sürece çalışacak olan bir fonksiyon tanımlayabilirsiniz. Self ise bir sonraki değişkenlerin bu fonksiyonda da kullanılmasına olanak sağlar. Diğer değişkenlerimizi de ekledik.

Tables, chairs, blankets ve beds sınıflarımızla beraber, (orders) ile sınıfına ait olduğunu belirttik. Orders sınıfının özellikleri bu sınıflarda da kullanılabilir durumda oluyor. İsterseniz her nesnenin kendi özelliğini ekleyebilirsiniz. Yukarıda da bahsettiğim şekilde, sandalyenin bacak uzunlukları gibi.

Bu adımda değişkenlerimize ürünlerimizi atayarak sınıflarımıza ekledik. Örneğin t1 değişkenimize tables sınıfına ait kitchen kategorisinde 0A001 barkodlu 20 dolara satılan ürünün 153 kere satıldığını ekledik. Ekledik ancak şimdi de bu ürünleri bir çıktı üzerinde görmek açısından listOrders adında liste içerisine ürünlerin tüm özelliklerini ekledik. Eklenen ürünlerin özelliklerin sıralamasına dikkat edelim.

Bu listedeki ürünleri yazdırmak için bir döngü kullanmak iyi fikir. Bunun için 5 değişkene ihtiyacımız var.

İlk olarak şunu görmeliyiz; konsola yazdırılan ürünlerin sahip olduğu özellikleri, listeden alması için a, b, c, d değişkenlerini kullandık. Döngü başa döndüğünde bu değişkenlerimiz artarak bir sonraki ürün özelliğini yazdırıyor. Örneğin b, ilk olarak 0A001, sonra 0A002, 0A003, 0B001… şeklinde barkodları yazdırmak için listedeki sırasına denk bir şekilde karşılık gelmesi için en başta 1, sonrasında 4 arttırarak devam ettirdik. Sonuç olarak konsolda böyle bir çıktı aldık:

Böylece kalıtım konusunun yanı sıra listeler ve döngülerin de nasıl çeşitlendirilebileceğini görmüş olduk. Girişte de bahsettiğim gibi, kaynak kodlara ekteki adresten ulaşabilirsiniz. Görüşmek üzere!

Math Student at Izmir University of Economics. I have been working on Machine Learning and AI. alicanakca.com

Math Student at Izmir University of Economics. I have been working on Machine Learning and AI. alicanakca.com