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.
Kopya kağıdı
super() fonksiyonu, bir alt sınıfın üst sınıfındaki metotları çağırmasına olanak tanıyarak işlevselliği değiştirmek yerine genişletmesini sağlar.
Yapıcılarda (constructors) super() kullanımı:
class Animal:
def __init__(self, name):
self.name = name
class Dog(Animal):
def __init__(self, name, breed):
super().__init__(name) # Ebeveynin __init__ metodunu çağır
self.breed = breedMetotları genişletmek için super() kullanımı:
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!") # Alt sınıfa özgü davranış eklesuper() olmadan: Alt sınıf metotları, ebeveyn işlevselliğini genişletmek yerine tamamen onun yerini alır.
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ı