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.

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