作者:Kevin
來(lái)源:麥?zhǔn)寰幊?/span>
@property
@property裝飾器可以把類中的實(shí)例方法轉(zhuǎn)成一個(gè)“值”,上代碼:
class Circle: def __init__(self, dia): self.dia = dia
@property def area(self):
a = (self.dia**2)*3.14 return a
c = Circle(4)
print("面積:",c.area) # 這里的area方法可以不用帶()了
運(yùn)行代碼后:
> 面積:50.24
用了@property裝飾器,最大的感受就是與常規(guī)的實(shí)例方法相比少了“()”也能調(diào)用了,這樣讓這個(gè)方法看上去更像一個(gè)“值”。
@staticmethod
上文算面積的方式有點(diǎn)麻煩,還要實(shí)例化類。能不能有一種即調(diào)即用的方式?
那就可以拿出@staticmethod裝飾器,「帶上這個(gè)裝飾器的方法可以不實(shí)例化就能用」。
因?yàn)椴恍枰獙㈩悓?shí)例化就能調(diào)用,所以構(gòu)造方法中的實(shí)例屬性都是不能拿來(lái)用的,所以參數(shù)里也沒(méi)有self關(guān)鍵字。
class Circle: @staticmethod def area(dia): # 沒(méi)有self關(guān)鍵字,但是需要傳入?yún)?shù) a = (dia**2)*3.14 return a
a = Circle.area(4) # 無(wú)需實(shí)例化,直接從類里調(diào) print("面積:",a)
運(yùn)行代碼后:
> 面積:50.24