0Pricing
Python Academy · Ders

@property Dekoratörü

Getter, setter ve silici yöntemleri için property kullanın.

@property Dekoratörü, CoddyKit'te ücretsiz bir Python Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Python Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Python Academy kursu toplamda 4 dersten oluşur.

Giriş

@property, bir yöntemi okunabilir bir niteliğe dönüştürür. @setter ve @deleter, denetimli erişim desenini tamamlar.

@property Neden Kullanılır?

Java tarzı getX()/setX() yerine Python, @property kullanır. Erişim bir nitelik gibi görünür: obj.value, obj.get_value() değil.
class Circle:
    def __init__(self, r): self._r = r
    @property
    def radius(self): return self._r
c = Circle(5)
print(c.radius)  # no ()

Hesaplanan Özellikler

@property yöntemleri anında hesaplama yapar. obj.area, her erişildiğinde hesaplanır; saklanan bir değer gerekmez.
import math
class Circle:
    def __init__(self, r): self._r = r
    @property
    def area(self): return math.pi * self._r**2
c = Circle(5)
print(round(c.area, 2))

Özellik Ayarlayıcısı

@property_name.setter, bir ayarlayıcı ekler. Artık c.radius = 10, ayarlayıcı yöntemi çağırır.
class Circle:
    def __init__(self, r): self._r = r
    @property
    def radius(self): return self._r
    @radius.setter
    def radius(self, val):
        if val <= 0: raise ValueError('radius must be positive')
        self._r = val
c = Circle(5)
c.radius = 10
print(c.radius)

Özellik Silicisi

@property_name.deleter, del obj.attr işlemini yönetir. Temizleme mantığı için kullanın.
class User:
    def __init__(self, name): self._name = name
    @property
    def name(self): return self._name
    @name.deleter
    def name(self): del self._name
u = User('Alice')
del u.name
print(hasattr(u, '_name'))

Salt Okunur Özellik

Yalnızca okuyucuyu tanımlayın; ayarlayıcı tanımlamayın. Atama yapılmaya çalışıldığında AttributeError oluşur.
class Const:
    def __init__(self, v): self._v = v
    @property
    def value(self): return self._v
c = Const(42)
print(c.value)
try: c.value = 99
except AttributeError as e: print(e)

Doğrulamalı Özellik

Ayarlayıcılar, verileri doğrulamak için ideal yerdir; saklamadan önce türü, aralığı veya biçimi denetleyin.
class BoundedInt:
    def __init__(self, lo, hi): self.lo,self.hi=lo,hi; self._v=lo
    @property
    def value(self): return self._v
    @value.setter
    def value(self, v):
        if not self.lo <= v <= self.hi:
            raise ValueError(f'{v} out of [{self.lo},{self.hi}]')
        self._v = v
b = BoundedInt(0, 10)
b.value = 5
print(b.value)

property ile Önbelleğe Alma

Bir kez hesaplayıp sonucu önbelleğe almak için @property ile önbelleğe alınmış bir değeri birleştirin.
class Expensive:
    _cache = None
    @property
    def result(self):
        if self._cache is None:
            self._cache = sum(range(1000))
        return self._cache
e = Expensive()
print(e.result)
print(e.result)

cached_property (Python 3.8+)

@functools.cached_property, özelliği bir kez hesaplar ve bir örnek niteliği olarak saklar; tekrarlanan hesaplama yapılmaz.
from functools import cached_property
import math
class Circle:
    def __init__(self, r): self.r = r
    @cached_property
    def area(self): return math.pi * self.r**2
c = Circle(5)
print(round(c.area, 2))

Property ve __slots__

__slots__, rastgele nitelik oluşturulmasını engeller ve bellekten tasarruf sağlar. Özellikler mantık ekler. Birbirlerini tamamlarlar.
class Point:
    __slots__ = ('_x', '_y')
    def __init__(self, x, y): self._x,self._y=x,y
    @property
    def x(self): return self._x
p = Point(1, 2)
print(p.x)

@property Ne Zaman Kullanılır?

Şu durumlarda @property kullanın: doğrulama, hesaplanan değerler gerektiğinde veya iç uygulamayı değiştirirken geriye dönük uyumluluğu korumak istediğinizde.
# Before: class Person:
#     def __init__(self, age): self.age = age
# After: add validation without changing caller code
class Person:
    def __init__(self, age): self.age = age
    @property
    def age(self): return self._age
    @age.setter
    def age(self, v):
        if v < 0: raise ValueError('negative age')
        self._age = v
p = Person(30)
print(p.age)

Hızlı Yoklama

Salt okunur bir @property'ye (ayarlayıcı tanımlanmamışken) atama yapmaya çalıştığınızda ne olur?

Özet

@property: okuyucuyu nitelik erişimine dönüştürür. @name.setter, yazma desteği ekler. @name.deleter, del desteği ekler. @cached_property, bir kez hesaplar. Ayarlayıcılar doğrulama için kullanılır.

Devam Edin

Mükemmel ilerliyorsunuz! Bir sonraki kavramda ustalaşmak için devam edin.

Sıkça Sorulan Sorular

“@property Dekoratörü” dersi ücretsiz mi?

Evet — “@property Dekoratörü” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Python Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Python Academy kursu toplamda 4 dersten oluşur.

“@property Dekoratörü” dersinde ne öğreneceğim?

Getter, setter ve silici yöntemleri için property kullanın. Python Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Python Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Python Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.

“@property Dekoratörü” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Python Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Python Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Birinci Sınıf Nesneler Olarak İşlevler
  2. Özel Dekoratörler Yazma
  3. @property Dekoratörü
  4. @classmethod ve @staticmethod
← Python Academy Sayfasına Dön