說到裝飾器,就不得不說python自帶的三個裝飾器:
1、@property 將某函數,做為屬性使用
@property 修飾,就是將方法,變成一個屬性來使用。
class A():
@property
def pfunc(self):
return self.value
@pfunc.setter
def pfunc(self,value):
self.value = value
@property
def pfunc1(self):
print('this is property')
if __name__=="__main__":
A.pfunc = 9
print A.pfunc
A.pfunc1
2、@classmethod 修飾類的方式
帶修飾類方法:cls做為方法的第一個參數,隱式的將類做為對象,傳遞給方法,調用時無須實例化。
普通函數方法:self做為第一個參數,隱式的將類實例傳遞給方法,調用方法時,類必須實例化。
class A():
def func(self,x,y):
return x * y
@classmethod
def cfunc(cls,x,y):
return x * y
if __name__=="__main__":
print A().func(5,5)
print A.cfunc(4,5)
3、@staticmethod 修飾類的方式
1)是把函數嵌入到類中的一種方式,函數就屬於類,同時表明函數不需要訪問這個類
2)使用修飾服,修飾方法,不需要實例化
class A():
def func(self,x,y):
return x * y
@staticmethod
def sfunc(x,y):
return x * y
if __name__=="__main__":
print A.sfunc(6,5)