Python進階-----類方法(@classmethod)


如果不想通過實例來調用類的函數屬性,而直接用類調用函數方法,則這就是類方法,通過內置裝飾器@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()   #>>> '這是一個計算器'
可以看出上述類並沒有實例化,可以通過類直接調用類函數。
當然類方法,實例也可以調用,但是並沒有什么用,違反了初衷:類方法就是專門供類使用


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM