日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
@Staticmethod、@Classmethod和@Property類裝飾器

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

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

@staticmethod和@classmethod

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

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

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

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

 
 
 
  1. ''' 
  2. @Author:Runsen 
  3. @微信公眾號(hào):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.     # 實(shí)例對(duì)象同樣運(yùn)行 
  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)用到這個(gè)類的一些屬性方法,只能直接 類名.屬性名或 類名.方法名。而 @classmethod 因?yàn)槌钟衏ls參數(shù),可以通過cls來(lái)調(diào)用類的屬性,類的方法,實(shí)例化對(duì)象等,避免硬編碼。

@property

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

 
 
 
  1. class School(): 
  2.     name = "家里蹲大學(xué)" 
  3.  
  4.     def test(self): 
  5.         print("實(shí)例方法") 
  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.  實(shí)例方法 

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

 
 
 
  1. class School(): 
  2.     name = "家里蹲大學(xué)" 
  3.  
  4.     def test(self): 
  5.         print("實(shí)例方法") 
  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ù) 千萬(wàn)別加() 
  15.     s.test_pro 
  16.      
  17.  # 輸出如下   
  18.  家里蹲大學(xué) 
  19.  靜態(tài)屬性 

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

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

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


網(wǎng)頁(yè)題目:@Staticmethod、@Classmethod和@Property類裝飾器
網(wǎng)頁(yè)網(wǎng)址:http://www.5511xx.com/article/cciisse.html