Python屬性的修改(裝飾器)

2022-07-06 08:42:13 字數 1190 閱讀 5767

一、property :將乙個方法 偽裝成乙個 屬性

class

person:

def__init__

(self,name,hight,weight):

self.name =name

self.

__hight =hight

self.

__weight =weight

@property

defbmi(self):

return

'%s 的bmi 值%s

' %(self.name,self.__weight / self.__hight ** 2)

p1 = person('

大陽哥',1.68,70)

#print(p1.bmi())

print(p1.bmi)

二、屬性的修改

class

person:

def__init__

(self,name,age):

self.name =name

if type(age) is

int:

self.

__age =age

else

:

print( '

你輸入的年齡的型別有誤,請輸入數字')

@property

defage(self):

return self.__age

@age.setter

defage(self, a1):

'''判斷,你修改的年齡必須是數字

'''if type(a1) is

int:

self.

__age =a1

else

:

print('

你輸入的年齡的型別有誤,請輸入數字')

@age.deleter

defage(self):

del self.__age

p1 = person('

帥哥',20)

print

(p1.age)

print(p1.__dict__

)p1.age = 23

print

(p1.age)

del p1.age

python屬性裝飾器 python 類屬性裝飾器

property裝飾器 後面跟的函式名就是以後的屬性,它即是getter,這個必須有,唯讀屬性 setter裝飾器 於屬性名同名,接收兩個引數,第乙個是self,第二個是將要賦值的值,將屬性變為可寫 deleter裝飾器 可以控制屬性是否刪除 property裝飾器必須在前,setter,delet...

python中的屬性裝飾器

class person def init self,name,age 18 self.name name self.age age property 屬性裝飾器,該裝飾器裝飾方法,下文中都必須用該方法 defage self 給你看,不希望你修改 print getter return self....

如何實現屬性可修改的函式裝飾器?

需求 在某專案中,程式執行效率較差,為分析程式內哪些函式的執行開銷較大,我們實現了乙個 帶timeout引數的函式裝飾器,裝飾功能如下 warn timeout 1.5 def func a,b 1 統計被裝飾函式的單次呼叫執行時間 2.時間大於引數timeout的,將此次函式呼叫記錄到log日誌中...