@property
- Python kursu
- Uzman
- Ders 10/47
- 5 dk
@property'nin descriptor olduğunu öğrenirsin.
@property bir descriptor mudur?
Evet — @property bir data descriptor'dır. property sınıfı arka planda __get__, __set__ ve __delete__ uygular ve bunları senin verdiğin fonksiyonlara bağlar.
@property okuma fonksiyonunu işaretler. @ad.setter yazma fonksiyonunu, @ad.deleter silme fonksiyonunu bağlar. Böylece descriptor protokolünü elle yazmadan aynı gücü elde edersin. property, en sık kullanılan descriptor'dır ve çoğu durumda özel descriptor yazmaktan daha okunaktır.
Property ile doğrulama
@property ve @ad.setter birlikte doğrulama için kullanılır. Setter içine if koyup geçersiz değeri raise ValueError ile reddedersin.
İç değeri self._x gibi alt çizgiyle saklarsın; bu, Python'da 'özel' işareti olarak kabul edilir. Property, dışarıdan x olarak görünür ama her erişim fonksiyonlarından geçer. Bu desen, sınıfın iç temsilini gizlerken dış API'yi kararlı tutar. Kullanıcı obj.x = -5 yazınca setter doğrular ve gerekirse hata fırlatır.
Uygulama Property ile sıcaklık doğrulama
Bir Thermometer sınıfı yaz. __init__ içinde self._celsius = 0 tanımla. @property ile celsius okuma yöntemi ekle; self._celsius'yu döndürsün. @celsius.setter ile yazma yöntemi ekle; değer -273'ten küçükse ValueError fırlat, değilse self._celsius = value yap. Örnek oluştur, celsius = 25 ata ve yazdır.
Başlangıç kodu
# Thermometer sınıfı yaz
# celsius property ekle
# değeri yazdırÖrnek çözüm
# Thermometer sınıfı yaz
class Thermometer:
def __init__(self):
self._celsius = 0
@property
def celsius(self):
return self._celsius
@celsius.setter
def celsius(self, value):
if value < -273:
raise ValueError("cok dusuk")
self._celsius = value
t = Thermometer()
t.celsius = 25
print(t.celsius)Beklenen çıktı
25
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 @property ne döndürür?
@property
def x(self):
return self._x- Bir property nesnesi Doğru cevap
- Özelliğin değerini
- Bir fonksiyon nesnesi
- Bir sınıf
Açıklama: bir property nesnesi. @property, fonksiyonu saran bir property nesnesi döndürür.
2 @property tanımını tamamla
class C:
@____
def x(self):
return self._x
class C:
@property
def x(self):
return self._x
Açıklama: @property okuma yöntemini işaretler.
3 Property kavramlarını eşleştir
| Kavram | Anlamı |
|---|---|
@property |
Okuma bağlar |
@x.setter |
Yazma bağlar |
property |
Data descriptor |
@x.deleter |
Silme bağlar |