Property () yapısı, property niteliğini döndürür.
Sözdizimi property()
şöyledir:
property (fget = Yok, fset = Yok, fdel = Yok, doc = Yok)
Önerilen Kaynaklar: Python @property: Nasıl Kullanılır ve Neden?
property () Parametreler
property()
Dört opsiyonel parametreleri alır:
- fget (isteğe bağlı) - Öznitelik değerini alma işlevi. Varsayılan değer
None
. - fset (isteğe bağlı) - Öznitelik değerini ayarlama işlevi. Varsayılan değer
None
. - fdel (isteğe bağlı) - Öznitelik değerini silme işlevi. Varsayılan değer
None
. - doc (isteğe bağlı) - Öznitelik için belgeleri (docstring) içeren bir dize. Varsayılan değer
None
.
Özellikten dönüş değeri ()
property()
belirtilen alıcı, ayarlayıcı ve siliciden özellik özniteliğini döndürür.
- Hiçbir bağımsız değişken belirtilmezse,
property()
alıcı, ayarlayıcı veya silici içermeyen bir temel özellik niteliği döndürür. - Eğer doktor sağlanmaz,
property()
alıcı fonksiyonunun docstring'ini alır.
Örnek 1: Alıcı, ayarlayıcı ve silici ile özellik oluşturma
class Person: def __init__(self, name): self._name = name def get_name(self): print('Getting name') return self._name def set_name(self, value): print('Setting name to ' + value) self._name = value def del_name(self): print('Deleting name') del self._name # Set property to use get_name, set_name # and del_name methods name = property(get_name, set_name, del_name, 'Name property') p = Person('Adam') print(p.name) p.name = 'John' del p.name
Çıktı
İsim alma İsim: Adam İsmi John olarak belirleme İsim silme
Burada, Kişinin ismini saklamak için özel değişken olarak _name kullanılır.
Ayrıca şunları da belirledik:
get_name()
kişinin adını almak için bir alıcı yöntem ,set_name()
kişinin adını ayarlamak için bir belirleyici yöntem ,del_name()
kişinin adını silmek için bir silme yöntemi .
Şimdi, property()
yöntemi çağırarak yeni bir özellik öznitelik adı belirledik .
Programda gösterildiği gibi, p.name
dahili get_name()
olarak referans almak , yöntemlerin içinde bulunan basılı çıktı aracılığıyla alıcı, set_name()
ayarlayıcı ve del_name()
silici olarak çağırır .
Örnek 2: @property decorator kullanma
Kullanmak yerine , alıcı, ayarlayıcı ve siliciyi atamak için property()
Python dekoratörünü kullanabilirsiniz @property
.
class Person: def __init__(self, name): self._name = name @property def name(self): print('Getting name') return self._name @name.setter def name(self, value): print('Setting name to ' + value) self._name = value @name.deleter def name(self): print('Deleting name') del self._name p = Person('Adam') print('The name is:', p.name) p.name = 'John' del p.name
Çıktı
İsim alma İsim: Adam İsmi John olarak belirleme İsim silme
Burada kullanmak yerine dekoratörü property()
kullandık @property
.
İlk olarak, name()
yöntemin aynı zamanda Person'un bir özelliği olduğunu belirtiyoruz . Bu, @property
programda gösterildiği gibi alıcı yöntemi kullanılarak yapılır .
Ardından, ayarlayıcıyı ve siliciyi belirtmek için öznitelik adını kullanırız.
Bu, @name.setter
ayarlayıcı yöntemi ve @name.deleter
silme yöntemi kullanılarak yapılır.
Dikkat edin, name()
alıcı, ayarlayıcı ve siliciyi tanımlamak için aynı yöntemi farklı tanımlarla kullandık.
Şimdi, ne zaman kullanırsak kullanalım p.name
, yöntemin içinde mevcut olan basılı çıktıda gösterildiği gibi dahili olarak uygun alıcı, ayarlayıcı ve siliciyi çağırır.