如果不想通過實例來調用類的函數屬性,而直接用類調用函數方法,則這就是類方法,通過內置裝飾器@calssmethod
類名.類方法()
類方法只是給類使用(無論是否存在實例),只能訪問實例屬性(變量)
1 class cal: 2 cal_name = '計算器'
3 def __init__(self,x,y): 4 self.x = x 5 self.y = y 6
7 @property #在cal_add函數前加上@property,使得該函數可直接調用,封裝起來
8 def cal_add(self): 9 return self.x + self.y 10
11 @classmethod #在cal_info函數前加上@classmethon,則該函數變為類方法,該函數只能訪問到類的數據屬性,不能獲取實例的數據屬性
12 def cal_info(cls): #python自動傳入位置參數cls就是類本身
13 print('這是一個%s'%cls.cal_name) #cls.cal_name調用類自己的數據屬性
14
15 cal.cal_info() #>>> '這是一個計算器'
可以看出上述類並沒有實例化,可以通過類直接調用類函數。
當然類方法,實例也可以調用,但是並沒有什么用,違反了初衷:類方法就是專門供類使用