@property detayları
- Python kursu
- Orta seviye
- Ders 38/116
- 5 dk
@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
# Account sınıfını @property ve setter ile yazÖrnek çözüm
# 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
@property
def balance(self):
return self._balance
____
def balance(self, value):
self._balance = value
@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 |