av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

@Staticmethod、@Classmethod和@Property類裝飾器

 @staticmethod 與 @classmethod在Python中稱為 裝飾器,用來修飾函數(shù),相當(dāng)于添加一個額外的功能,不再像普通函數(shù)那樣進行實例化。

創(chuàng)新互聯(lián)建站專業(yè)為企業(yè)提供善右網(wǎng)站建設(shè)、善右做網(wǎng)站、善右網(wǎng)站設(shè)計、善右網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、善右企業(yè)網(wǎng)站模板建站服務(wù),十余年善右做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。

@staticmethod和@classmethod

其實@staticmethod和@classmethod都是用來聲明靜態(tài)方法的。只不過一個聲明靜態(tài)方法,一個聲明類方法。

靜態(tài)方法:使用裝飾器@staticmethod。沒有self和cls參數(shù)。

類方法:使用裝飾器@classmethod。第一個參數(shù)為當(dāng)前類的對象,通常為cls。

為了方便大家了解兩者的差別,以下的示例代碼將有助于發(fā)現(xiàn)其中的差別:

 
 
 
  1. ''' 
  2. @Author:Runsen 
  3. @微信公眾號:Python之王 
  4. @博客:https://blog.csdn.net/weixin_44510615 
  5. @Date:2020/8/30 
  6. ''' 
  7. class A(): 
  8.     # 類的屬性 
  9.     x = 1 
  10.  
  11.     @classmethod 
  12.     def get_name(cls, name): 
  13.         print(cls.x)   
  14.         print('my name is %s' % name) 
  15.  
  16.     @staticmethod 
  17.     def get_age(age): 
  18.         print(A.x) 
  19.         print(f'i am %s years old' % age) 
  20.  
  21. if __name__ == '__main__': 
  22.     A.get_name('Runsen')   
  23.     A.get_age(20) 
  24.      
  25.     # 實例對象同樣運行 
  26.     a = A() 
  27.     a.get_name('Runsen') 
  28.     a.get_age(20) 
  29.  
  30.      
  31. #輸出如下 
  32. my name is Runsen 
  33. i am 20 years old 
  34. my name is Runsen 
  35. i am 20 years old 

如果在 @staticmethod 中要調(diào)用到這個類的一些屬性方法,只能直接 類名.屬性名或 類名.方法名。而 @classmethod 因為持有cls參數(shù),可以通過cls來調(diào)用類的屬性,類的方法,實例化對象等,避免硬編碼。

@property

@property可以將一個方法的調(diào)用變成屬性調(diào)用。舉例說明:平時我們調(diào)用數(shù)據(jù)屬性和方法,是這樣的

 
 
 
  1. class School(): 
  2.     name = "家里蹲大學(xué)" 
  3.  
  4.     def test(self): 
  5.         print("實例方法") 
  6.  
  7.     @property 
  8.     def test_pro(self): 
  9.         print("靜態(tài)屬性") 
  10.  
  11. if __name__ == "__main__": 
  12.     s = School() 
  13.     print(s.name) 
  14.     s.test() 
  15.      
  16.  # 輸出如下    
  17.  家里蹲大學(xué) 
  18.  實例方法 

這時就要用到@preperty裝飾器,該裝飾器能夠讓一個方法變成屬性調(diào)用。

 
 
 
  1. class School(): 
  2.     name = "家里蹲大學(xué)" 
  3.  
  4.     def test(self): 
  5.         print("實例方法") 
  6.  
  7.     @property 
  8.     def test_pro(self): 
  9.         print("靜態(tài)屬性") 
  10.  
  11. if __name__ == "__main__": 
  12.     s = School() 
  13.     print(s.name) 
  14.     # 注意返回的函數(shù) 千萬別加() 
  15.     s.test_pro 
  16.      
  17.  # 輸出如下   
  18.  家里蹲大學(xué) 
  19.  靜態(tài)屬性 

從今天以后,在Python編程中,@property廣泛應(yīng)用在Python類的定義中非常常見。你一看到@property,第一反應(yīng)就是:@property專門負責(zé)把一個方法變成同名屬性的。

本文已收錄 GitHub,傳送門~[1] ,里面更有大廠面試完整考點,歡迎 Star。

Reference
[1]傳送門~:
https://github.com/MaoliRUNsen/runsenlearnpy100


當(dāng)前題目:@Staticmethod、@Classmethod和@Property類裝飾器
當(dāng)前鏈接:http://uogjgqi.cn/article/cciisse.html
掃二維碼與項目經(jīng)理溝通

我們在微信上24小時期待你的聲音

解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流