CodeBlanks Logo Icon CodeBlanks

@x.setter

@x.setter ile ayarlayıcıyı öğrenirsin.

@balance.setter decorator

@balance.setter decorator'ı, bir özelliğe değer atandığında çalışacak metodu tanımlar. Bu sayede atama sırasında doğrulama yapılabilir.

Örnek: @balance.setter\n def balance(self, value):\n self._balance = value. a.balance = 200 ataması setter'ı çağırır. Setter içinde value negatifse hata fırlatmak mümkündür; böylece iç veri bozulamaz.

Setter ile doğrulama

Setter, atanan değeri denetleyip kötüyü reddedebilir. Negatif bakiye gibi geçersiz değerlerde hata fırlatmak ya da sessizce dönmek yaygın bir desendir.

Örnek: def balance(self, value):\n if value < 0:\n return\n self._balance = value. Bu setter negatif değerleri reddeder. Böylece a.balance = -50 ataması _balance'ı değiştirmez; iç veri korunur. Kapsülleme, içeriği koruyan bir kapı gibi çalışır.

Uygulama Account'a setter ekle

Account sınıfını tanımla. __init__(self, balance) ile self._balance = balance yaz. @property ile def balance(self): ve return self._balance yaz. @balance.setter ile def balance(self, value): ve gövdede self._balance = value yaz. Sonra a = Account(100), a.balance = 200 ve print(a.balance) çağrısı yap.

Başlangıç kodu

main.py
# Account sınıfına setter ekle

Örnek çözüm

main.py
# Account sınıfına setter ekle
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 = 200
print(a.balance)

Beklenen çıktı

200

Soru ve cevaplar

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

1 Getter ve setter'ı eşle

Kavram Anlamı
@property Okuma
@balance.setter Yazma
a.balance = 200 Setter çağrılır

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

  • Sınıf tanımlanırken
  • Metot çağrıldığında
  • Örnek silinirken
  • x = değer atamasında Doğru cevap

Açıklama: @x.setter, x'e değer atandığında çalışır.

3 Setter gövdesini tamamla

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

Açıklama: value parametresi _balance'a atanır.

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