Python property() 函式



**Python property() 函式** 用於在 getter 和 setter 等其他方法的幫助下建立和管理類的屬性。如果您不想顯式使用 **property()** 函式,可以使用其 **@property** 裝飾器。

在像 Python 這樣的面向物件程式語言中,getter 和 setter 用於資料封裝。這裡,封裝 表示將屬性和方法捆綁在一起以限制對其的直接訪問。

此方法是 內建函式 之一,不需要匯入任何模組。

語法

以下是 Python **property()** 函式的語法:

property(getter, setter, deleter, doc)

引數

Python **property()** 函式接受以下引數:

  • **getter** - 它表示 getter 方法,用於獲取 屬性 的值。

  • **setter** - 此引數表示 setter 方法,用於設定屬性的值。

  • **deleter** - 此引數指定 deleter 方法,用於刪除屬性的值。

  • **doc** - 它指定一個包含屬性 文件字串 的字串。

返回值

Python **property()** 函式返回指定 getter、setter 和 deleter 的屬性屬性。

property() 函式示例

練習以下示例以瞭解在 Python 中使用 **property()** 函式。

示例:property() 函式的使用

以下程式碼演示瞭如何使用 property() 函式獲取、設定和刪除給定類的屬性。為此,我們建立了 getter、setter 和 deleter 方法。[瞭解更多:Python - 裝飾器]

class Metal:
   def __init__(self, metalName):
      self._metalName = metalName

   def get_metal(self):
      print("Getting Metal Name")
      return self._metalName

   def set_metal(self, name):
      print("Setting Metal Name to:" + name)
      self._metalName = name

   def del_metal(self):
      print("Deleting Metal Name")
      del self._metalName

   metalName = property(get_metal, set_metal, del_metal)

metal = Metal("Gold")
print(metal.metalName)
metal.metalName = "Silver"
del metal.metalName

以上程式碼的輸出如下所示:

Getting Metal Name
Gold
Setting Metal Name to:Silver
Deleting Metal Name

示例:使用 @property 裝飾器建立只讀屬性

以下示例展示了 Python property() 函式的基本用法。在這裡,我們使用 @property 裝飾器建立一個簡單的只讀屬性。

class Flight:
   def __init__(self, jetEngine):
      self._jetEngine = jetEngine

   @property
   def jetEngine(self):
      return self._jetEngine
        
myFlight = Flight(121)
print("Getting the attribute value of class:")
print(myFlight.jetEngine)

執行以上程式後,會產生以下結果:

Getting the attribute value of class:
121 

示例:使用 @property 的 Getter 和 Setter 函式

如果我們不想顯式呼叫 property() 函式,則需要使用 @property 裝飾器。在下面的程式碼中,我們建立了一個 getter 來獲取屬性,並添加了一個 setter 函式來修改屬性。

class Flight:
   def __init__(self, model):
      self._model = model

   @property
   def model(self):
      return self._model

   @model.setter
   def model(self, modelVal):
      if modelVal >= 0:
         self._model = modelVal
      else:
         raise ValueError("Model value must be non-negative")
            
myFlight = Flight(1210012)
print("Setting the model number of Flight using setter:")
print(myFlight.model)

以下是以上程式碼的輸出:

Setting the model number of Flight using setter:
1210012
python_built_in_functions.htm
廣告