Python
@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.
Örnek çözümü göster
# 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)
Kendini test et
-
@x.setter ne zaman çalışır?
- nesne.x = değer yazınca
- Sınıf tanımlanırken
- del nesne.x yazınca
- nesne.x okununca
Cevabı göster
nesne.x = değer yazınca — @x.setter, özniteliğe değer atanırken çağrılır.
-
setter satırını tamamla
@property
def balance(self):
return self._balance
____
def balance(self, value):
self._balance = value
Cevabı göster
@property
def balance(self):
return self._balance
@balance.setter
def balance(self, value):
self._balance = value
-
Property parçalarını eşleştir
- @property
- Okuma yakalanır
- @name.setter
- Atama yakalanır
- @name.deleter
- Silme yakalanır
- self._balance
- Gizli öznitelik
Sıradaki ders: @cached_property