歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Python中的property() 函數

大家也許知道C#中提供了屬性Property這個概念,讓我們在對私有成員賦值、獲取時更加方便,而不用像C++分別定義set*和get*兩個函數,在使用時也就像直接使用變量一樣。

今天突然發現Python中竟然也提供了如此類似的方法,感到甚為親切,發上來大家一起討論一下,有不妥的地方還請多多指教。

假設定義了一個類:C,該類必須繼承自object類,有一私有變量__x

  1. class C:  
  2.  def __init__(self):  
  3.   self.__x=None  
  4.   1.現在介紹第一種使用屬性的方法:  
  5.   在該類中定義三個函數,分別用作賦值、取值和刪除變量(此處表達也許不很清晰,請看示例)  
  6.  def getx(self):  
  7.   return self.__x  
  8.  def setx(self,value):  
  9.   self.__x=value  
  10.  def delx(self):  
  11.   del self.__x  
在類中在增加一條語句:x=property(getx,setx,delx,''),property函數原型為property(fget=None,fset=None,fdel=None,doc=None),所以根據自己需要定義相應的函數即可。
現在這個類中的x屬性便已經定義好了,我們可以先定義一個C的實例c=C(),然後賦值c.x=100,取值y=c.x,刪除:del c.x。是不是很簡單呢?請看第二種方法

下面看第二種方法(在2.6中新增)
首先定義一個類C:
  1. class C:  
  2.  def __init__(self):  
  3.   self.__x=None  
  4.   下面就開始定義屬性了  
  5.  @property  
  6.  def x(self):  
  7.   return self.__x  
  8.  @x.setter  
  9.  def x(self,value):  
  10.   self.__x=value  
  11.  @x.deleter  
  12.  def x(self):  
  13.   del self.__x  
到此為止就可以像上面一樣使用x屬性了。。如果打算設為只讀或者只寫屬性,那就定義一個函數吧,不過同一屬性的三個函數名要相同。
Copyright © Linux教程網 All Rights Reserved