@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...