CodeBlanks Logo Icon CodeBlanks

Soyut property

@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

main.py
# Shape soyut sınıfını ve Square alt sınıfını yaz

Örnek çözüm

main.py
# 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ı

Soru
class Square(Shape):
    def __init__(self, side):
        self.side = side

    ____
    def area(self):
        return self.side ** 2
Cevap
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

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