屬性

  • property()
經過property()建立屬性,格式以下
property(fget,fset,fdel,doc)
#只有fget參數,產生的屬性是隻讀的
#(可選)fdel參數:用於刪除特性的方法(它不須要參數)
#(可選)doc參數:文檔字符串
#若是property()沒有參數,產生的屬性既不可讀,也不可寫
比較訪問器方法和property()函數
#使用訪問器方法獲取屬性
class Rectangle:
    def __init__(self):
         self.width = 0
         self.height = 0

    def setSize(self,size):
#    self.width = size
#    self.height = size
        self.width,self.height = size   #注意也能夠這樣寫

    def getSize(self):
        return self.width,self.height

r = Rectangle()
r.height =8
r.width = 9
print r.getSize()  #輸出(9, 8)
r.setSize((16,18))
print r.width      #輸出 16

    

#使用 property()
__metaclass__ = type  #定義爲新式類,要在新式類中使用 property()
class Rectangle:
    def __init__(self):
         self.width = 0
         self.height = 0

    def setSize(self,size):
#    self.width = size
#    self.height = size
        self.width,self.height = size   #注意也能夠這樣寫

    def getSize(self):
        return self.width,self.height

    size = property(getSize,setSize)  # property建立屬性,其中訪問器被用做參數(先取值,後賦值)


r = Rectangle()
r.height =8
r.width = 9
print r.size     #輸出(9,8)
r.size = 16,18
print r.width    #輸出 16
相關文章
相關標籤/搜索