property裝飾器詳解

2021-10-04 12:35:40 字數 1235 閱讀 4597

@property裝飾器,看了好幾個教程都不太理解,知道發現了知乎的這篇好文python @property的介紹與使用,終於懂了!!

下面結合github上的乙個例子,解釋一下這個裝飾器:

class

person

(object):

def__init__

(self, name, age)

:# 初始化

self._name = name #屬性前加上下劃線是不希望直接訪問的意思

self._age = age

# 訪問器 - getter方法

@property

defname

(self)

:#在訪問_name時,只需要像訪問屬性那樣,訪問name方法就可以了,注意:不需要加()

return self._name

# 訪問器 - getter方法

@property

defage

(self)

:return self._age

# 修改器 - setter方法

@age.setter

defage(self, age)

:#可以修改_age的值

self._age = age

defplay

(self)

:if self._age <=16:

print

('%s正在玩飛行棋.'

% self._name)

else

:print

('%s正在玩鬥地主.'

% self._name)

person = person(

'王大錘',12

)#例項化

person.name #注意這裡name雖然是方法,但是因為裝飾器的緣故,不能加()

#input:『王大錘』

person.play(

)#input:王大錘正在玩飛行棋.

person.age =

22#注意這裡age雖然是方法,但是因為修改器的緣故,不能加(),感覺好像是方法變為了屬性。

person.play(

)#input:王大錘正在玩鬥地主.

person.name =

'白元芳'

#input: attributeerror: can't set attribute

內建裝飾器 property

使用 property 閱讀 4164 內建裝飾器 property的基本功能就是把類中的方法當作屬性來訪問 在繫結屬性時,如果我們直接把屬性暴露出去,雖然寫起來很簡單,但是,沒辦法檢查引數,導致可以把成績隨便改 s student s.score 9999這顯然不合邏輯。為了限制score的範圍,...

物件property裝飾器

class people def init self,name self.name name property defname self obj1.name return self.name name.setter defname self,val obj1.name egon iftype val...

property內建裝飾器

是乙個python內建的裝飾器,可以裝飾在 類內部的方法 上 可以將該方法呼叫方式由 物件.方法 變成 物件.方法 目的是為了迷惑呼叫者,呼叫的 方法 誤以為是 屬性 ps 在某些場景下,呼叫的方法只是用來獲取計算後的某個值。例 計算人體bmi 健康 指數 bmi weight height hei...