CodeBlanks Logo Icon CodeBlanks

@abstractmethod

@abstractmethod ile soyut metotları öğrenirsin.

@abstractmethod

@abstractmethod süsleyicisi, bir metodu “alt sınıf doldurmak zorunda” olarak işaretler. abc modülünden abstractmethod içe aktarılır.

Örnek: class Animal(ABC):\n @abstractmethod\n def sound(self):\n pass. Bu tanımda sound boş bırakılır ama alt sınıf doldurmak zorundadır. Alt sınıf sound'u yazmadan örneklenirse TypeError fırlar. Böylece soyut sınıf, davranışı şart koşar.

Alt sınıf doldurur

Soyut metot, alt sınıfta aynı imzayla yeniden tanımlanır. Alt sınıf metodu yazmazsa Python örneklemeye izin vermez. Bu, alt sınıfın davranışı unutmasını engeller.

Örnek: class Dog(Animal):\n def sound(self):\n return "Hav". Dog artık sound'u doldurduğu için örneklenir; Dog().sound() çağrısı "Hav" döndürür. Eğer sound'u yazmazsan Dog() da TypeError fırlatır.

Uygulama Dog sınıfı sound doldursun

from abc import ABC, abstractmethod ile başla. Animal(ABC) soyut sınıfını tanımla; içinde @abstractmethod ile def sound(self): ve pass olsun. Sonra class Dog(Animal): alt sınıfını tanımla, gövdede def sound(self): ve return "Hav" yaz. En son d = Dog() ile örnek oluştur ve print(d.sound()) ile yazdır.

Başlangıç kodu

main.py
# abc modülünden ABC ve abstractmethod al, Animal ve Dog sınıflarını yaz

Örnek çözüm

main.py
# abc modülünden ABC ve abstractmethod al, Animal ve Dog sınıflarını yaz
from abc import ABC, abstractmethod

class Animal(ABC):
    @abstractmethod
    def sound(self):
        pass

class Dog(Animal):
    def sound(self):
        return "Hav"

d = Dog()
print(d.sound())

Beklenen çıktı

Hav

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 import satırını tamamla

Soru
from abc import ABC, ____

class Animal(ABC):
    @abstractmethod
    def sound(self):
        pass
Cevap
from abc import ABC, abstractmethod

class Animal(ABC):
    @abstractmethod
    def sound(self):
        pass

Açıklama: abstractmethod abc modülünden alınır.

2 Alt sınıf soyut metodu yazmazsa ne olur?

  • Soyut sınıf gibi davranır, örneklenemez Doğru cevap
  • Soyut metot yok sayılır
  • Üst sınıfın gövdesi çalışır
  • Program çöker

Açıklama: Eksik soyut metot örneği engeller.

3 Soyut metot parçalarını eşleştir

Kavram Anlamı
@abstractmethod Süsleyici
def sound(self) Soyut imza
class Dog(Animal) Alt sınıf
return "Hav" Doldurulmuş gövde

Orta seviye bölümündeki tüm dersler