Kalıtım, tüm yöntemleri ve özellikleri başka bir sınıftan miras alan bir sınıfı tanımlamamızı sağlar.
Ana sınıf, temel sınıf olarak da adlandırılan miras alınan sınıftır.
Alt sınıf, türetilmiş sınıf da denilen başka bir sınıftan miras alan sınıftır.
Üst Sınıf (Parent Class) Oluşturma
Herhangi bir sınıf bir üst sınıf olabilir, bu nedenle sözdizimi, başka bir sınıf oluşturmakla aynıdır.
Örnek:
firstname ve lastname özellikleri ve bir printname metodu ile ile Person adında bir sınıf oluşturalım.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | class Person: def __init__(self, fname, lname): self.firstname = fname self.lastname = lname def printname(self): print(self.firstname, self.lastname) #Use the Person class to create an object, and then execute the printname method: x = Person("John", "Doe") x.printname() |
Alt Sınıf Chield Class Oluşturma
İşlevselliği başka bir sınıftan miras alan bir sınıf oluşturmak için, alt sınıfı yaratırken üst sınıfı parametre olarak gönderilir.
Örnek:
Person sınıfından özellik ve yöntemleri devralacak Student adlı bir sınıf oluşturalım.
1 2 3 4 | class Student(Person): pass |
Not: Sınıfa başka özellikler veya yöntemler eklemek istemiyorsanız pass anahtar sözcüğünü kullanın.
Artık Student sınıfı, Person sınıfı ile aynı özellik ve yöntemlere sahiptir.
Örnek:
Bir nesne oluşturmak için Student sınıfını kullanalım ve ardından printname yöntemini yürütelim:
1 2 3 4 | x = Student("Mike", "Olsen") x.printname() |
__init__() Fonksiyonu Ekleme
Şimdiye kadar, üst sınıf özellik ve yöntemlerini miras alan bir çocuk sınıfı yarattık.
__init __ () işlevini alt sınıfa ekleyelim. (pass anahtar sözcüğü yerine).
Not: __init __ () işlevi, sınıf içinde yeni bir nesne oluşturmak için her kullanıldığında otomatik olarak çağrılır.
Örnek:
1 2 3 4 | class Student(Person): def __init__(self, fname, lname): |
__İnit __ () işlevini eklediğinizde, alt sınıf artık ebeveynin __init __ () işlevini devralmaz.
Not: Child Class’ ın__init __ () işlevi, Parent Class’ ın__init __ () işlevinin mirasını geçersiz kılar.
Ebeveynin __init __ () işlevinin mirasını korumak için, ebeveynin __init __ () işlevine bir çağrı ekleyelim.
Örnek:
1 2 3 4 5 | class Student(Person): def __init__(self, fname, lname): Person.__init__(self, fname, lname) |
Şimdi __init __ () işlevini başarıyla ekledik ve üst sınıfın kalıtımsallığını koruduk ve __init __ () işlevinde işlevsellik eklemeye hazırız.
super() Fonksiyonu
Python ayrıca, alt sınıfın üst sınıfındaki tüm yöntemleri ve özellikleri miras almasını sağlayacak bir super () işlevine sahiptir.
1 2 3 4 5 6 | class Student(Person): def __init__(self, fname, lname): super().__init__(fname, lname) self.graduationyear = 2019 |
Aşağıdaki örnekte, 2019 yılı bir değişken olmalı ve öğrenci nesneleri oluştururken Öğrenci sınıfına geçmelidir. Bunu yapmak için, __init __ () işlevine başka bir parametre ekleyin:
Örnek:
Bir yıl parametresi ekleyin ve nesneleri oluştururken doğru yılı girin:
1 2 3 4 5 6 7 8 | class Student(Person): def __init__(self, fname, lname, year): super().__init__(fname, lname) self.graduationyear = year x = Student("Mike", "Olsen", 2019) |
Metot Ekleme
Student sınıfına welcome adlı bir yöntem ekleyelim.
1 2 3 4 5 6 7 8 9 | class Student(Person): def __init__(self, fname, lname, year): super().__init__(fname, lname) self.graduationyear = year def welcome(self): print("Welcome", self.firstname, self.lastname, "to the class of", self.graduationyear) |
[…] Python Kalıtım […]