成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

開發 后端
@staticmethod 與 @classmethod在Python中稱為 裝飾器,用來修飾函數,相當于添加一個額外的功能,不再像普通函數那樣進行實例化。

[[352589]]

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

@staticmethod和@classmethod

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

靜態方法:使用裝飾器@staticmethod。沒有self和cls參數。

類方法:使用裝飾器@classmethod。第一個參數為當前類的對象,通常為cls。

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

  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 中要調用到這個類的一些屬性方法,只能直接 類名.屬性名或 類名.方法名。而 @classmethod 因為持有cls參數,可以通過cls來調用類的屬性,類的方法,實例化對象等,避免硬編碼。

@property

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

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

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

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

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

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

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

 

責任編輯:姜華 來源: Python之王
相關推薦

2017-07-20 16:02:27

Python編程

2021-12-27 07:10:26

ClassmethodStaticmetho函數

2021-04-11 08:21:20

Python@property裝飾器

2024-05-20 09:26:42

Python裝飾器函數

2025-04-14 08:35:00

Python類裝飾器裝飾器

2023-02-07 07:47:52

Python裝飾器函數

2021-04-15 15:20:46

PythonProperty裝飾器

2010-02-01 17:50:32

Python裝飾器

2024-02-26 00:00:00

TypeScript裝飾器decorators

2024-06-03 10:26:47

Python裝飾器對象編程

2023-08-07 16:07:42

2016-11-01 09:24:38

Python裝飾器

2022-09-19 23:04:08

Python裝飾器語言

2022-10-24 07:31:53

Python編程裝飾器

2017-07-07 17:01:32

裝飾器代碼Python

2021-02-01 14:17:53

裝飾器外層函數里層函數

2021-06-01 07:19:58

Python函數裝飾器

2023-12-11 15:51:00

Python裝飾器代碼

2024-05-24 11:36:28

Python裝飾器

2022-09-26 09:02:54

TS 裝飾器TypeScript
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美日韩激情 | 999久久久久久久久6666 | 精品中文字幕一区二区三区 | 久草新视频 | 欧美中文字幕在线观看 | 欧美乱码精品一区二区三区 | 中文字幕在线一区二区三区 | 国产91在线 | 亚洲 | 做a视频 | 视频一区二区在线观看 | 国产精品毛片无码 | 一区二区在线 | 欧美精品一区二区三区视频 | 欧美综合视频 | 黄色在线网站 | 亚洲免费视频在线观看 | 毛片网站在线观看视频 | 久久99这里只有精品 | 福利视频一区 | 一区二区三区中文字幕 | 国产福利在线视频 | 中文字幕 国产精品 | 国产欧美精品一区二区色综合朱莉 | 国产精品毛片无码 | 欧美激情久久久久久 | 毛片软件 | 国产成人精品网站 | 欧美一级片在线看 | 情侣酒店偷拍一区二区在线播放 | 亚洲在线免费 | 欧美一级大黄 | 国产做a爱片久久毛片 | 精品久久久久久亚洲精品 | 国产亚洲精品久久午夜玫瑰园 | 日韩中文字幕一区 | 国产在线看片 | 精品一二三区 | 九九综合九九 | 久草a√ | 国产视频第一页 | 黄色片在线看 |