Python özelliği ()

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.namedahili 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, @propertyprogramda 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.setterayarlayıcı yöntemi ve @name.deletersilme 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.

Ilginç makaleler...