新聞中心
最近小編一直在看有關(guān)python從基礎(chǔ)到常見的各類方法與函數(shù),然后碰到有關(guān)property的使用,于是自己整理了一番,有需要的小伙伴可以來看下啦~

property語法
property(fget=None, fset=None, fdel=None, doc=None)
fget是一個獲取屬性值的函數(shù),fset是一個設(shè)置屬性值的函數(shù),fdel是一個刪除屬性的函數(shù),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裝飾器就是負責把一個方法變成屬性調(diào)用,通常用在屬性的get方法和set方法,通過設(shè)置@property可以實現(xiàn)實例成員變量的直接訪問,又保留了參數(shù)的檢查。另外通過設(shè)置get方法而不定義set方法可以實現(xiàn)成員變量的只讀屬性。
把一個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
可以直接以調(diào)用屬性的方式調(diào)用方法
s = Student() s.score #獲取score屬性值 s.score = 88 #設(shè)置屬性score的值為88
為什么property具有如此的魔力?
property是一種描述符,被@property修飾的成員函數(shù),將變?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,我們通過函數(shù)也可以???這有什么用呢?
最常見的,在web開發(fā)時,設(shè)置用戶模型,需要對用戶設(shè)定的密碼進行加密處理,都會用到property。
希望大家可以熟練掌握property,有助于代碼編程哦~如需了解更多python實用知識,點擊進入PyThon學習網(wǎng)教學中心。
網(wǎng)站題目:創(chuàng)新互聯(lián)Python教程:關(guān)于pythonproperty用法操作詳解
當前URL:http://m.fisionsoft.com.cn/article/copjegs.html


咨詢
建站咨詢
