super() Fonksiyonu
Coddy'nin Python Journey'sinin Object Oriented Programming bölümünün bir parçası — ders 18 / 64.
super() fonksiyonu, bir alt sınıfın üst sınıfındaki metotları çağırmasına olanak tanır. Bu, üst sınıfın işlevselliğini tamamen değiştirmek yerine genişletmenizi sağlar.
İşte yapıcı (constructor) içinde super() kullanımına bir örnek:
class Animal:
def __init__(self, name):
self.name = name
print(f"Animal created: {name}")
class Dog(Animal):
def __init__(self, name, breed):
super().__init__(name) # Ebeveynin __init__ metodunu çağır
self.breed = breed
print(f"Dog breed set: {breed}")Bir köpek nesnesi oluşturun:
buddy = Dog("Buddy", "Golden Retriever")
print(f"Name: {buddy.name}, Breed: {buddy.breed}")Çıktı:
Animal created: Buddy
Dog breed set: Golden Retriever
Name: Buddy, Breed: Golden RetrieverEbeveyn metotlarını genişletmek için super() kullanın:
class Animal:
def make_sound(self):
print("Generic animal sound")
class Dog(Animal):
def make_sound(self):
super().make_sound() # Önce ebeveynin metodunu çağır
print("Woof!") # Köpeğe özgü davranış ekleGenişletilmiş metodu çağırın:
buddy = Dog()
buddy.make_sound()Çıktı:
Generic animal sound
Woof!super() olmadan, ebeveynin işlevselliğini kaybedersiniz:
class Cat(Animal):
def make_sound(self):
print("Meow!") # Sadece kedi sesi, ebeveyn metodu yok sayıldı
cat = Cat()
cat.make_sound()Çıktı:
Meow!Önemli Nokta: Alt sınıflardan üst sınıf metotlarını çağırmak için super() kullanın. Bu, işlevselliği tamamen değiştirmek yerine genişletmenize olanak tanır. Yaygın kullanımlar arasında üst sınıf __init__ metotlarını çağırmak ve üst sınıf davranışını genişletmek yer alır.
Görev
OrtaBu meydan okumada, kalıtım kullanarak bir Person ve Employee sınıf hiyerarşisi uygulayacaksınız.
person.py: name ve age özniteliklerine sahip Person sınıfını içeriremployee.py: Person sınıfından kalıtım alan Employee sınıfını içerirdriver.py: Uygulamanızı test etmek için ana dosya
Her dosya, uygulama boyunca size rehberlik etmek için ayrıntılı TODO yorumları içerir.
Kendin dene
# TODO: person.py dosyasından Person sınıfını içe aktarın
# TODO: employee.py dosyasından Employee sınıfını içe aktarın
def main():
# TODO: "Alice" isminde ve 30 yaşında bir Person nesnesi oluşturun
person = None
# TODO: "Bob" isminde, 35 yaşında ve "Developer" işine sahip bir Employee nesnesi oluşturun
employee = None
# TODO: Person nesnesi üzerinde introduce() metodunu çağırın
# Beklenen çıktı: "Hi, I'm Alice and I'm 30 years old"
# TODO: Boşluk bırakmak için boş bir satır yazdırın - print()
# TODO: Employee nesnesi üzerinde introduce() metodunu çağırın
# Beklenen çıktı:
# "Hi, I'm Bob and I'm 35 years old"
# "I work as a Developer"
if __name__ == "__main__":
main()Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Object Oriented Programming bölümündeki tüm dersler
1OOP Temelleri
Harici DosyalarOOP'ye GirişSınıflar ve Nesnelerself ParametresiMetotlarÖzniteliklerYapıcı Metot (__init__)Özet - Basit Hesap Makinesi4Kalıtım
Temel Kalıtımsuper() FonksiyonuMetot Geçersiz KılmaÇoklu KalıtımMetot Çözümleme SırasıÖzet - Çalışan Hiyerarşisi7Özel Metotlar
Sihirli Metotlara GirişOperatör Aşırı YüklemeKapsayıcı Sihirli MetotlarıÖzet - Özel Liste10Tasarım Kalıpları Bölüm 1
Tasarım kalıplarına girişSingleton KalıbıFactory KalıbıObserver KalıbıStrategy Kalıbı13Final Meydan Okumaları
E-öğrenme PlatformuBankacılık SistemiOyun Karakteri GeliştirmeAraç Kiralama Servisi5Çok Biçimlilik (Polymorphism)
Metot Geçersiz Kılmaya Yeniden BakışDuck TypingSoyut Sınıflar ve MetotlarArayüz TasarımıÖzet - Şekil Hesaplayıcı8İleri Düzey OOP Kavramları
Kompozisyon ve KalıtımMixinsStatik ve Sınıf MetotlarıSınıf DekoratörleriBağlam Yöneticileri11Tasarım Kalıpları Bölüm 2
Komut KalıbıAdaptör KalıbıDekoratör KalıbıŞablon Metot KalıbıDurum KalıbıKompozit Kalıbı