@x.setter
- Python kursu
- Orta seviye
- Ders 20/116
- 5 dk
@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
# Account sınıfına setter ekleÖrnek çözüm
# 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
@balance.setter
def balance(self, value):
self._balance = ____
@balance.setter
def balance(self, value):
self._balance = value
Açıklama: value parametresi _balance'a atanır.