Menu
Coddy logo textTech

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 öznitelik söz dizimini korurken özniteliklere nasıl erişileceğini ve bunların nasıl değiştirileceğini denetlemenizi sağlar.

İşte özellik alıcısına sahip 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ın:

person = Person("Alice", 30)
print(person.age)

Çıktı:

30

Aslında bir method çağırıyor olsa da age öğesine parantez olmadan eriştiğine dikkat et.

Değerleri ayarlarken 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 = value

Artık yaşı otomatik doğrulamayla ayarlayabilirsiniz:

person = Person("Alice", 30)
person.age = 31     # Doğrulama ile setter'ı kullanır
print(person.age)   # Getter'ı kullanır

# Bu bir hata fırlatırdı:
# person.age = -5   # ValueError: Yaş negatif olamaz

Çıktı:

31

Değerleri hesaplayan hesaplanmış ö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 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şimi söz dizimini korurken veri doğrulamaya ve hesaplanmış değerlere olanak tanır.

challenge icon

Görev

Orta

Santigrat ve Fahrenhayt arasında dönüşüm yapan temperature.py dosyasındaki 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ı takip et.

Her dönüşümü [celsius]°C is [fahrenheit]°F biçiminde yazdır; Santigrat değeri verildiği hâliyle, Fahrenhayt değeri ise Python’ın hesapladığı şekilde gösterilmelidir. 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°F

Kendin dene

# TODO: Temperature sınıfını temperature modülünden içe aktar

# Sınıfı test et:
# TODO: 25°C'de bir temperature örneği oluştur
temp = None  # Gerçek Temperature örneği ile değiştir

# TODO: Hem Celsius hem de Fahrenheit değerlerini yazdır
# TODO: Şu formatı kullan: "25.0°C is 77.0°F"

# TODO: Sıcaklığı 98.6°F'ye ayarla

# TODO: Dönüşümün çalıştığını doğrulamak için her iki değeri de tekrar yazdır
# TODO: Öncekiyle aynı formatı kullan
quiz iconKendini test et

Bu 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

Kendi başına pratik yap: Online Python derleyicisi