掃二維碼與項目經理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯(lián)網交流
最近小編一直在看有關python從基礎到常見的各類方法與函數,然后碰到有關property的使用,于是自己整理了一番,有需要的小伙伴可以來看下啦~

property語法
property(fget=None, fset=None, fdel=None, doc=None)
fget是一個獲取屬性值的函數,fset是一個設置屬性值的函數,fdel是一個刪除屬性的函數,doc是一個字符串(類似于注釋)
class Student: def __init__(self,score): self._score = score def get_score(self): return self._score def set_score(self,value): self._score = value score = property(get_score,set_score)
也可以使用另外一種方法:通過裝飾器的形式
@property裝飾器就是負責把一個方法變成屬性調用,通常用在屬性的get方法和set方法,通過設置@property可以實現實例成員變量的直接訪問,又保留了參數的檢查。另外通過設置get方法而不定義set方法可以實現成員變量的只讀屬性。
把一個getter方法變成屬性,只需要加上@property就可以了,此時,@property本身又創(chuàng)建了另一個裝飾器@score.setter,把一個setter方法變成屬性賦值,于是,我們就擁有一個可控的屬性操作,
實際操作中,使用裝飾器的方式更加方便簡潔,所有推薦使用這種方式
class Student(object): def __init__(self,score): self._score = score @property def score(self): return self._score @score.setter def score(self, value): self._score = value
可以直接以調用屬性的方式調用方法
s = Student() s.score #獲取score屬性值 s.score = 88 #設置屬性score的值為88
為什么property具有如此的魔力?
property是一種描述符,被@property修飾的成員函數,將變?yōu)橐粋€描述符。
class Foo:
@property
def get_x(self):
print('getting value')
return 'x_value'
def get_y(self):
pass
foo=Foo()
type(Foo.get_x)
type(Foo.get_y)
為什么使用property,我們通過函數也可以?。窟@有什么用呢?
最常見的,在web開發(fā)時,設置用戶模型,需要對用戶設定的密碼進行加密處理,都會用到property。
希望大家可以熟練掌握property,有助于代碼編程哦~如需了解更多python實用知識,點擊進入PyThon學習網教學中心。

我們在微信上24小時期待你的聲音
解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯(lián)網交流