作者:Kevin
來源:麥叔編程
@property
@property裝飾器可以把類中的實例方法轉成一個“值”,上代碼:
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方法可以不用帶()了
運行代碼后:
> 面積:50.24
用了@property裝飾器,最大的感受就是與常規的實例方法相比少了“()”也能調用了,這樣讓這個方法看上去更像一個“值”。
@staticmethod
上文算面積的方式有點麻煩,還要實例化類。能不能有一種即調即用的方式?
那就可以拿出@staticmethod裝飾器,「帶上這個裝飾器的方法可以不實例化就能用」。
因為不需要將類實例化就能調用,所以構造方法中的實例屬性都是不能拿來用的,所以參數里也沒有self關鍵字。
class Circle: @staticmethod def area(dia): # 沒有self關鍵字,但是需要傳入參數 a = (dia**2)*3.14 return a
a = Circle.area(4) # 無需實例化,直接從類里調 print("面積:",a)
運行代碼后:
> 面積:50.24