十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
最近小編一直在看有關(guān)python從基礎(chǔ)到常見的各類方法與函數(shù),然后碰到有關(guān)property的使用,于是自己整理了一番,有需要的小伙伴可以來看下啦~

property語法
property(fget=None, fset=None, fdel=None, doc=None)
fget是一個(gè)獲取屬性值的函數(shù),fset是一個(gè)設(shè)置屬性值的函數(shù),fdel是一個(gè)刪除屬性的函數(shù),doc是一個(gè)字符串(類似于注釋)
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裝飾器就是負(fù)責(zé)把一個(gè)方法變成屬性調(diào)用,通常用在屬性的get方法和set方法,通過設(shè)置@property可以實(shí)現(xiàn)實(shí)例成員變量的直接訪問,又保留了參數(shù)的檢查。另外通過設(shè)置get方法而不定義set方法可以實(shí)現(xiàn)成員變量的只讀屬性。
把一個(gè)getter方法變成屬性,只需要加上@property就可以了,此時(shí),@property本身又創(chuàng)建了另一個(gè)裝飾器@score.setter,把一個(gè)setter方法變成屬性賦值,于是,我們就擁有一個(gè)可控的屬性操作,
實(shí)際操作中,使用裝飾器的方式更加方便簡(jiǎn)潔,所有推薦使用這種方式
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
可以直接以調(diào)用屬性的方式調(diào)用方法
s = Student() s.score #獲取score屬性值 s.score = 88 #設(shè)置屬性score的值為88
為什么property具有如此的魔力?
property是一種描述符,被@property修飾的成員函數(shù),將變?yōu)橐粋€(gè)描述符。
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,我們通過函數(shù)也可以?。窟@有什么用呢?
最常見的,在web開發(fā)時(shí),設(shè)置用戶模型,需要對(duì)用戶設(shè)定的密碼進(jìn)行加密處理,都會(huì)用到property。
希望大家可以熟練掌握property,有助于代碼編程哦~如需了解更多python實(shí)用知識(shí),點(diǎn)擊進(jìn)入PyThon學(xué)習(xí)網(wǎng)教學(xué)中心。