Merhaba arkadaşlar, bu yazımızda Python derslerinin bu serisinde yirmi beşinci ders olarak Python Multiple Inheritance konusuna değinmeye çalışacağım. Umarım sizler için faydalı bir yazı olur. İsterseniz hemen başlayalım.
Python Multiple Inheritance (Çoklu Miras Alma)
Python’da çoklu miras alma, bir sınıfın birden fazla sınıfı kalıtım almasıdır. Bu sayede, bir sınıf birden fazla sınıfın metodlarını ve niteliklerini kullanabilir. Aynı zamanda, eğer birden fazla sınıf aynı isimli metodu veya nitelikleri içeriyorsa, Python sınıfın en sol türediği sınıfın metodunu veya niteliklerini kullanır.
class Parent1: def method1(self): print("Parent1 Method") class Parent2: def method2(self): print("Parent2 Method") class Child(Parent1, Parent2): pass child = Child() child.method1() # Output: Parent1 Method child.method2() # Output: Parent2 Method
Bu örnekte, Parent1
ve Parent2
sınıfları method1()
ve method2()
metodlarını tanımlar. Child
sınıfı, Parent1
ve Parent2
sınıflarını kalıtım alır. Child
sınıfı, Parent1
ve Parent2
sınıflarının metodlarını kullanabilir. Aynı zamanda, eğer Parent1
ve Parent2
sınıfları aynı isimli metodları içeriyorsa, Python Parent1
sınıfının metodunu kullanır.
Python’da çoklu miras alma, sınıf yapısının daha okunaklı ve anlaşılır hale gelmesini sağlar. Ancak, çoklu miras alma kullanılırken dikkatli olunmalıdır, çünkü aynı isimli metodlar ve nitelikler için çakışmalar oluşabilir.
Çoklu Miras Almada Yapıcı Fonksiyon
Çoklu miras alma sırasında, yapıcı fonksiyonlar da (constructor) kullanılabilir. Yapıcı fonksiyon, sınıfın nesnesi oluşturulduğunda çağrılan ve nesnenin başlangıç değerlerini ayarlamak için kullanılan bir fonksiyondur. Çoklu miras alma sırasında, yapıcı fonksiyonlar üst sınıflardan kalıtım alınır ve türetilmiş sınıflar için özelleştirilebilir.
class Parent1: def __init__(self, value1): self.value1 = value1 class Parent2: def __init__(self, value2): self.value2 = value2 class Child(Parent1, Parent2): def __init__(self, value1, value2, value3): super().__init__(value1, value2) self.value3 = value3 child = Child(1, 2, 3) print(child.value1) # Output: 1 print(child.value2) # Output: 2 print(child.value3) # Output: 3
Bu örnekte, Parent1
ve Parent2
sınıfları yapıcı fonksiyonlarını tanımlar ve value1
ve value2
niteliklerini ayarlar. Child
sınıfı, Parent1
ve Parent2
sınıflarını kalıtım alır ve kendi yapıcı fonksiyonunu tanımlar. Child
sınıfının yapıcı fonksiyonu, super()
kullanarak Parent1
ve Parent2
sınıflarının yapıcı fonksiyonlarını çağırarak, value1
ve value2
niteliklerini ayarlar. Aynı zamanda, Child
sınıfının yapıcı fonksiyonu, value3
niteliğini de ayarlar. Bu örnekte, çoklu miras alma sırasında yapıcı fonksiyonlar kullanıldığı için, Child
nesnesi hem Parent1
hem de Parent2
sınıflarının niteliklerini ve Child
sınıfının niteliklerini içerecektir.
Arkadaşlar bu Python Multiple Inheritance adlı yazımızın da sonuna gelmiş bulunmaktayız. Umarım faydalı olmuştur.