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 ** 2Bir 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.53975Değ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ırKendin dene
Bu ders bir kod alıştırması içermiyor.
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
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ı