Menu
Coddy logo textTech

Property Dekoratörü

Coddy'nin Python Journey'sinin Object Oriented Programming bölümünün bir parçası — ders 10 / 64.

@property dekoratörü, metotlara öznitelikler gibi erişmenize olanak tanıyarak değerleri almak ve ayarlamak için temiz bir yol sunar.

İşte @property kullanan bir sınıf örneği:

class Circle:
    def __init__(self, radius):
        self._radius = radius
    
    @property
    def radius(self):
        return self._radius
    
    @property
    def area(self):
        return 3.14159 * self._radius ** 2

Bir daire oluşturun ve özelliklere erişin:

my_circle = Circle(5)

Özelliklere normal öznitelikler gibi erişin:

print(my_circle.radius)
print(my_circle.area)

Çıktı:

5
78.53975

Özelliklere erişirken parantez () kullanmadığınıza dikkat edin - öznitelik gibi görünürler ancak metot kodunu çalıştırırlar.

Değerlerin değiştirilmesine izin vermek için bir setter ekleyin:

class Circle:
    def __init__(self, radius):
        self._radius = radius
    
    @property
    def radius(self):
        return self._radius
    
    @radius.setter
    def radius(self, value):
        if value > 0:
            self._radius = value
        else:
            print("Radius must be positive!")

Artık yarıçapı bir öznitelik gibi ayarlayabilirsiniz:

my_circle = Circle(5)
my_circle.radius = 10  # Ayarlayıcıyı (setter) kullanır
print(my_circle.radius)  # Alıcıyı (getter) kullanır

Çıktı:

10

Önemli Nokta: @property metotların öznitelik gibi görünmesini sağlarken, @property_name.setter değerlerin nasıl atandığını kontrol etmenize olanak tanır.

Kopya kağıdı

@property dekoratörü, metotlara öznitelikler gibi erişmenize olanak tanıyarak değerleri almak ve ayarlamak için temiz bir yol sunar.

Temel özellik (property) kullanımı:

class Circle:
    def __init__(self, radius):
        self._radius = radius
    
    @property
    def radius(self):
        return self._radius
    
    @property
    def area(self):
        return 3.14159 * self._radius ** 2

Özelliklere parantez olmadan erişin:

my_circle = Circle(5)
print(my_circle.radius)  # 5
print(my_circle.area)    # 78.53975

Değer atamasını kontrol etmek için bir ayarlayıcı (setter) ekleyin:

@radius.setter
def radius(self, value):
    if value > 0:
        self._radius = value
    else:
        print("Radius must be positive!")

Değerleri öznitelikler gibi ayarlayın:

my_circle.radius = 10  # Ayarlayıcıyı (setter) kullanır
print(my_circle.radius)  # Alıcıyı (getter) kullanır

Kendin dene

Bu ders bir kod alıştırması içermiyor.

quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Object Oriented Programming bölümündeki tüm dersler