Soyut property
- Python kursu
- Orta seviye
- Ders 49/116
- 4 dk
@abstractproperty ile soyut özellikleri öğrenirsin.
Soyut property
Bir özniteliği soyut yapmak için @property ile @abstractmethod'i üst üste kullanırsın. Üstte @property, altında @abstractmethod yazılır. Bu, alt sınıfın ilgili özelliği doldurmasını zorunlu kılar.
Örnek: @property\n@abstractmethod\ndef area(self):\n pass. Alt sınıf @property ile area'yı doldurur. Böylece shape.area çağrısı her alt sınıf için çalışır; her birinin alan hesabını kendisi verir.
Alt sınıf doldurur
Alt sınıf, soyut property'yi @property ile doldurur. Soyut sınıftaki pass gövdesi yerine gerçek hesaplama yazılır. Alt sınıf örneği oluşturulduğunda obj.area bu hesaplamayı döndürür.
Örnek: class Square(Shape):\n def __init__(self, side):\n self.side = side\n @property\n def area(self):\n return self.side ** 2. Square(3).area çağrısı 9 döner. Eğer area doldurulmazsa Square de soyut kalır ve örneklenemez.
Uygulama Shape soyut area, Square doldurur
from abc import ABC, abstractmethod ile başla. Shape(ABC) soyut sınıfını tanımla; içinde @property, @abstractmethod ve def area(self): ile pass olsun. Sonra class Square(Shape): alt sınıfını tanımla; def __init__(self, side): ve self.side = side yaz. @property ile def area(self): ekleyip return self.side ** 2 yaz. En son s = Square(3) ile örnek oluştur ve print(s.area) ile yazdır.
Başlangıç kodu
# Shape soyut sınıfını ve Square alt sınıfını yazÖrnek çözüm
# Shape soyut sınıfını ve Square alt sınıfını yaz
from abc import ABC, abstractmethod
class Shape(ABC):
@property
@abstractmethod
def area(self):
pass
class Square(Shape):
def __init__(self, side):
self.side = side
@property
def area(self):
return self.side ** 2
s = Square(3)
print(s.area)Beklenen çıktı
9
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Soyut property'de süsleyici sırası nasıldır?
- Önce @abstractmethod, sonra @property
- Yalnızca @abstractmethod yeterli
- Yalnızca @property yeterli
- Önce @property, sonra @abstractmethod Doğru cevap
Açıklama: @property üstte, @abstractmethod altta olur.
2 alt sınıf @property satırı
class Square(Shape):
def __init__(self, side):
self.side = side
____
def area(self):
return self.side ** 2
class Square(Shape):
def __init__(self, side):
self.side = side
@property
def area(self):
return self.side ** 2
Açıklama: Alt sınıf @property ile area'yı doldurur.
3 Soyut property parçalarını eşleştir
| Kavram | Anlamı |
|---|---|
@property |
Üst süsleyici |
@abstractmethod |
Alt süsleyici |
def area(self) |
Soyut imza |
return self.side ** 2 |
Doldurulmuş gövde |