CodeBlanks Logo Icon CodeBlanks

@property detayları

@property'nin detaylarını öğrenirsin.

@property derinlemesine

@property bir metodu okunabilir bir özniteliğe çevirir. obj.value yazınca arkadan metot çalışır; parantez gerekmez. Böylece erişimi kontrol altında tutarsın.

Yanına @value.setter yazarak atamayı da yakalarsın. Örnek: @temperature.setter\ndef temperature(self, v):\n if v < -273: raise ValueError(...). Bu, negatif sınırı engeller. @value.deleter ile del çağrısını da özelleştirebilirsin. Üçlü birlikte tam bir koruma sağlar.

Üçlü birlikte

Bir özniteliği tamamen kontrollü yapmak için üç metodu da yazarsın. @property okumayı, @name.setter atamayı, @name.deleter silmeyi yakalar. Üçü de aynı isimle tanımlanır.

Örnek: bir Account sınıfında balance için bu üç metodu yazarsan; negatif bakiye atamasını engeller, silmeyi loglar, okumayı doğrudan döndürürsün. Öznitelik adı her üç metodun adıyla aynı olmalı; Python bunları tek bir property nesnesinde birleştirir.

Uygulama Bakiye için property yaz

Account adında bir sınıf tanımla. def __init__(self, balance): ile başla, gövdede self._balance = balance yaz. @property ile def balance(self): metodu ekle, return self._balance döndürsün. @balance.setter ile def balance(self, value): metodu ekle, gövdede self._balance = value yaz. Sınıftan sonra a = Account(100) ile örnek oluştur, a.balance = 250 ile ata ve print(a.balance) ile yazdır.

Başlangıç kodu

main.py
# Account sınıfını @property ve setter ile yaz

Örnek çözüm

main.py
# Account sınıfını @property ve setter ile yaz
class Account:
    def __init__(self, balance):
        self._balance = balance

    @property
    def balance(self):
        return self._balance

    @balance.setter
    def balance(self, value):
        self._balance = value

a = Account(100)
a.balance = 250
print(a.balance)

Beklenen çıktı

250

Soru ve cevaplar

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

1 @x.setter ne zaman çalışır?

  • nesne.x = değer yazınca Doğru cevap
  • Sınıf tanımlanırken
  • del nesne.x yazınca
  • nesne.x okununca

Açıklama: @x.setter, özniteliğe değer atanırken çağrılır.

2 setter satırını tamamla

Soru
@property
def balance(self):
    return self._balance

____
def balance(self, value):
    self._balance = value
Cevap
@property
def balance(self):
    return self._balance

@balance.setter
def balance(self, value):
    self._balance = value

Açıklama: @ad.setter biçimi setter metodunu bağlar.

3 Property parçalarını eşleştir

Kavram Anlamı
@property Okuma yakalanır
@name.setter Atama yakalanır
@name.deleter Silme yakalanır
self._balance Gizli öznitelik

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