Menu
Coddy logo textTech

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 Retriever

Ebeveyn 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ış ekle

Geniş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.

challenge icon

Görev

Orta

Bu 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çerir
  • employee.py: Person sınıfından kalıtım alan Employee sınıfını içerir
  • driver.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 = breed

Metotları 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ış ekle

super() 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()
quiz iconKendini test et

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