首頁  >  文章  >  後端開發  >  在Python中property裝飾器的基本用法介紹

在Python中property裝飾器的基本用法介紹

高洛峰
高洛峰原創
2017-03-08 11:16:051871瀏覽

  Python的@property裝飾器用來把一個類別的方法變成類別的屬性調用,然後@property本身又創建了另一個裝飾器,用一個方法給屬性賦值。下面是在類別中使用了@property後,設定類別的讀寫屬性,只讀和只寫屬性。

  all方法設定的是讀寫屬性,可以設定這個屬性,也可以讀取這個屬性,如28行所示,如果沒有定義__init__()方法的話,只能先設定了這個屬性才能使用這個屬性。在32行中,如果想知道write屬性的值,也是會報錯的。而在34行中,也是沒有辦法繼續給readonly這個制度屬性賦值的。這裡使用了@property之後,可以實現Python“私有變數”,當然不是真正的私有,真正的私有比較複雜,不過也可以透過@property實現?在之後學習了再寫。

class UseProperty(object):

    def __init__(self):
        self._all = 233

    @property
    def all(self):
        return self._all

    @all.setter
    def all(self, v):
        self._all = v

    @property
    def readonly(self):
        return self._all

    @property
    def write(self):
        raise AttributeError('This is not a readonly attribute.')

    @write.setter
    def write(self, value):
        self._write = value


p = UseProperty()
print p.all
p.all = 100
print p.all
p.write = 233
# print p.write
print p.readonly
# p.readonly = 10


#

以上是在Python中property裝飾器的基本用法介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn