成人免费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類裝飾器裝飾器

2021-04-15 15:20:46

PythonProperty裝飾器

2023-02-07 07:47:52

Python裝飾器函數

2010-02-01 17:50:32

Python裝飾器

2024-02-26 00:00:00

TypeScript裝飾器decorators

2024-06-03 10:26:47

Python裝飾器對象編程

2022-10-24 07:31:53

Python編程裝飾器

2023-08-07 16:07:42

2016-11-01 09:24:38

Python裝飾器

2022-09-19 23:04:08

Python裝飾器語言

2013-05-02 10:51:17

iOS開發Objective-C@property

2015-08-10 10:58:53

dompropertyattribute

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裝飾器代碼
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 中文字幕一区在线 | 日韩毛片视频 | 国产高清在线精品 | 亚洲性爰 | 国产精品久久久久久久免费大片 | 亚洲精彩视频在线观看 | 精品粉嫩超白一线天av | 成人深夜福利 | 一区二区三区四区国产 | 精品亚洲一区二区三区四区五区 | 男女啪啪高潮无遮挡免费动态 | av中文字幕在线 | 国产精品永久久久久 | 日本国产精品视频 | 国产激情自拍视频 | 亚洲高清一区二区三区 | 国产综合久久 | 91精品国产综合久久久久久丝袜 | 一区二区免费 | 97起碰| 成年人在线 | 国产一区二区久久 | 欧美淫| 成人影院一区二区三区 | 91视频观看 | 久久精品国产免费 | 国产日产精品一区二区三区四区 | 日本天天操 | 久久国产美女视频 | 暖暖日本在线视频 | 久久精品国产一区二区电影 | 成人综合在线视频 | 国产乱码高清区二区三区在线 | 欧美精品一区二区三区在线播放 | 欧洲尺码日本国产精品 | 日韩视频在线观看中文字幕 | 亚洲精品一区二区网址 | 国产午夜精品一区二区三区四区 | 中文字幕精品视频 | 91精品国产乱码久久蜜臀 | 毛片免费在线 |