Property Dekoratörleri
Coddy'nin Python Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 14 / 64.
Özellik dekoratörleri, basit özellik söz dizimini korurken özelliklere nasıl erişildiğini ve bunların nasıl değiştirildiğini kontrol etmenizi sağlar.
İşte bir özellik alıcısı olan bir sınıf örneği:
class Person:
def __init__(self, name, age):
self._name = name
self._age = age
@property
def age(self):
return self._ageÖzelliği normal bir öznitelik gibi kullan:
person = Person("Alice", 30)
print(person.age)Çıktı:
30Aslında bir yöntemi çağırıyor olsan da age öğesine parantez kullanmadan eriştiğine dikkat et.
Değerler ayarlanırken verileri doğrulamak için bir setter ekleyin:
class Person:
def __init__(self, name, age):
self._name = name
self._age = age
@property
def age(self):
return self._age
@age.setter
def age(self, value):
if value < 0:
raise ValueError("Age cannot be negative")
self._age = valueArtık yaşı otomatik doğrulamayla ayarlayabilirsiniz:
person = Person("Alice", 30)
person.age = 31 # Doğrulama yapan setter'ı kullanır
print(person.age) # Getter'ı kullanır
# Bu, bir hataya neden olur:
# person.age = -5 # ValueError: Yaş negatif olamazÇıktı:
31Değerleri hesaplayan türetilmiş özellikler oluşturun:
class Rectangle:
def __init__(self, width, height):
self.width = width
self.height = height
@property
def area(self):
return self.width * self.height
rect = Rectangle(5, 3)
print(rect.area) # 5 * 3 = 15 değerini hesaplarÇıktı:
15Önemli Nokta: Özellik dekoratörleri, metotların öznitelik gibi görünmesini sağlar. Getter'lar için @property, setter'lar için @attribute_name.setter kullanın. Bu, basit öznitelik erişim sözdizimini korurken veri doğrulamasına ve hesaplanan değerlere olanak tanır.
Görev
Ortatemperature.py dosyasındaki Celsius ile Fahrenheit arasında dönüşüm yapan Temperature sınıfını tamamla. Ardından sıcaklık dönüşümlerini test etmek için bu sınıfı driver.py içinde kullan. Adım adım talimatlar için her iki dosyadaki TODO yorumlarını izle.
Her dönüşümü [celsius]°C is [fahrenheit]°F biçiminde yazdır; Celsius değeri verildiği gibi, Fahrenheit değeri ise Python'ın hesapladığı şekilde olsun. Sayıları yuvarlama veya biçimlendirme. Sürücünün ürettiği iki satır şunlardır:
25°C is 77.0°F
37.0°C is 98.6°FKendin dene
# TODO: temperature modülünden Temperature sınıfını içe aktar
# Sınıfı test et:
# TODO: 25°C değerinde bir sıcaklık örneği oluştur
temp = None # Gerçek bir Temperature örneğiyle değiştir
# TODO: Hem Celsius hem de Fahrenheit değerlerini yazdır
# TODO: Şu biçimi kullan: "25°C is 77.0°F" (her iki değeri de yuvarlamadan veya biçimlendirmeden olduğu gibi yazdır)
# TODO: Sıcaklığı 98.6°F olarak ayarla
# TODO: Dönüşümün çalıştığını doğrulamak için her iki değeri tekrar yazdır
# TODO: Öncekiyle aynı biçimi kullanBu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Nesne Yönelimli Programlama bölümündeki tüm dersler
1OOP Temelleri
Harici DosyalarOOP'ye GirişSınıflar ve Nesnelerself ParametresiMetotlarÖzniteliklerYapıcı Metot (__init__)Özet - Basit Hesap Makinesi4Kalıtım
Temel Kalıtımsuper() FonksiyonuMetot Geçersiz KılmaÇoklu KalıtımMetot Çözümleme SırasıÖzet - Çalışan Hiyerarşisi7Özel Metotlar
Sihirli Metotlara GirişOperatör Aşırı YüklemeKapsayıcı Sihirli MetotlarıÖzet - Özel Liste10Tasarım Kalıpları Bölüm 1
Tasarım kalıplarına girişSingleton KalıbıFactory KalıbıObserver KalıbıStrategy Kalıbı13Final Meydan Okumaları
E-öğrenme PlatformuBankacılık SistemiOyun Karakteri GeliştirmeAraç Kiralama Servisi5Çok Biçimlilik (Polymorphism)
Metot Geçersiz Kılmaya Yeniden BakışDuck TypingSoyut Sınıflar ve MetotlarArayüz TasarımıÖzet - Şekil Hesaplayıcı8İleri Düzey OOP Kavramları
Kompozisyon ve KalıtımMixinsStatik ve Sınıf MetotlarıSınıf DekoratörleriBağlam Yöneticileri11Tasarım Kalıpları Bölüm 2
Komut KalıbıAdaptör KalıbıDekoratör KalıbıŞablon Metot KalıbıDurum KalıbıKompozit KalıbıKendi başına pratik yap: Online Python derleyicisi