@abstractmethod
- Python kursu
- Orta seviye
- Ders 48/116
- 5 dk
@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
# abc modülünden ABC ve abstractmethod al, Animal ve Dog sınıflarını yazÖrnek çözüm
# 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
from abc import ABC, ____
class Animal(ABC):
@abstractmethod
def sound(self):
pass
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 |