Python中proprety的使用技巧

2021-08-22 12:09:54 字數 2754 閱讀 3026

寫在前面,python中proprety在python中大量使用,尤其是在一些框架和網路大牛寫的**中,非常常見,所有學習proprety就非常必要了,廢話不多說,直接上**:

# 定義例項方法的方法來使用

class

test

(object):

# 可以定義引數

def__init__

(self, name="liming"):

self.__age = 18

if name == "liming":

self.name = "liming"

else:

self.name = name

defgetage

(self):

print("獲取屬性的時候呼叫")

if self.name == 'likang':

return self.__age

else:

print("%s這個使用者不能訪問當前的這個屬性" % self.name)

defsetage

(self, value):

if self.name == 'lili':

self.__age = value

else:

print("無權進行修改")

defdelage

(self):

del self.__age

print("刪除屬性的時候呼叫")

age = property(getage, setage, delage)

if __name__ == '__main__':

test = test()

test.age = 20

輸出:

無權進行修改
第一種用法,定義例項方法,然後建立proprety的例項物件,注意:在定義三個方法的時候,set***,get***,del***中的」***」必須保持一致.proprety主要的是用來當乙個物件要操作比較敏感屬性的時候,可以對屬性進行保護和對資料進行篩選,以免出現不期待的結果發生.

class

test

(object):

def__init__

(self, name='liming'):

self.__age = 18

if name == 'liming':

self.name = 'liming'

else:

self.name = name

@property

defage

(self):

if self.name == "liming":

return self.__age

else:

print("%s無權訪問該屬性")

@age.setter

defage

(self, value):

if self.name == "lili":

self.__age = value

else:

print("無權修改該屬性")

@age.deleter

defage

(self):

del self.__age

test = test()

test.age = 20

輸出:

無權修改該屬性
總結:使用proprety方法,可以保證資料被正確的訪問和賦值,在訪問資料的時候,可以對使用者進行許可權相關的驗證等,從而保證了資料的穩定性.

最後,貼出proprety的部分原始碼:

property(fget=none, fset=none, fdel=none, doc=none) -> property attribute

fget is a function

to be used for getting an attribute value, and likewise

fset is a function

for setting, and fdel a function

for del'ing, an

attribute. typical use is

to define a managed attribute x:

class c(object):

def getx(self): return self._x

def setx(self, value): self._x = value

def delx(self): del self._x

x = property(getx, setx, delx, "i'm the 'x' property.")

decorators make defining new properties or modifying existing ones easy:

class c(object):

@property

def x(self):

"i am the 'x' property."

return self._x

@x.setter

def x(self, value):

self._x = value

@x.deleter

def x(self):

del self._x

# (copied from class doc)

物件導向 proprety

為什麼要用property?將乙個類的函式定義成特性以後,物件再去使用的時候obj.name,根本無法察覺自己的name是執行了乙個函式然後計算出來的,這種特性的使用方式遵循了統一訪問的原則 class people def init self,name,weight,height self.nam...

python中 python中的 與

這一部分首先要理解python記憶體機制,python中萬物皆物件。對於不可變物件,改變了原來的值,其別名 變數名 繫結到了新值上面,id肯定會改變 對於可變物件,操作改變了值,id肯定會變,而 是本地操作,其值原地修改 對於 號操作,可變物件和不可變物件呼叫的都是 add 操作 對於 號操作,可變...

python中否定for 在python中否定函式

有沒有一種方法可以否定乙個函式,使它返回負數。在我的函式中,我有條件句,每個條件句都讓這個 烏龜 移動。有沒有一種方法可以否定這一點,所以烏龜的每乙個動作都是否定的。我說的是 狀況 在def ttinterpret program interpret program as a tinyturtle ...