這篇文章主要講解了“怎么使用@Staticmethod、@Classmethod和@Property類裝飾器”,文中的講解內(nèi)容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“怎么使用@Staticmethod、@Classmethod和@Property類裝飾器”吧!
站在用戶的角度思考問題,與客戶深入溝通,找到平邑網(wǎng)站設計與平邑網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設計與互聯(lián)網(wǎng)技術結合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都網(wǎng)站設計、成都網(wǎng)站建設、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、域名注冊、網(wǎng)站空間、企業(yè)郵箱。業(yè)務覆蓋平邑地區(qū)。
@staticmethod 與 @classmethod在Python中稱為 裝飾器,用來修飾函數(shù),相當于添加一個額外的功能,不再像普通函數(shù)那樣進行實例化。
@staticmethod和@classmethod
其實@staticmethod和@classmethod都是用來聲明靜態(tài)方法的。只不過一個聲明靜態(tài)方法,一個聲明類方法。
靜態(tài)方法:使用裝飾器@staticmethod。沒有self和cls參數(shù)。
類方法:使用裝飾器@classmethod。第一個參數(shù)為當前類的對象,通常為cls。
為了方便大家了解兩者的差別,以下的示例代碼將有助于發(fā)現(xiàn)其中的差別:
''' @Author:Runsen @微信公眾號:Python之王 @博客:https://blog.csdn.net/weixin_44510615 @Date:2020/8/30 ''' class A(): # 類的屬性 x = 1 @classmethod def get_name(cls, name): print(cls.x) print('my name is %s' % name) @staticmethod def get_age(age): print(A.x) print(f'i am %s years old' % age) if __name__ == '__main__': A.get_name('Runsen') A.get_age(20) # 實例對象同樣運行 a = A() a.get_name('Runsen') a.get_age(20) #輸出如下 1 my name is Runsen 1 i am 20 years old 1 my name is Runsen 1 i am 20 years old
如果在 @staticmethod 中要調(diào)用到這個類的一些屬性方法,只能直接 類名.屬性名或 類名.方法名。而 @classmethod 因為持有cls參數(shù),可以通過cls來調(diào)用類的屬性,類的方法,實例化對象等,避免硬編碼。
@property
@property可以將一個方法的調(diào)用變成屬性調(diào)用。舉例說明:平時我們調(diào)用數(shù)據(jù)屬性和方法,是這樣的
class School(): name = "家里蹲大學" def test(self): print("實例方法") @property def test_pro(self): print("靜態(tài)屬性") if __name__ == "__main__": s = School() print(s.name) s.test() # 輸出如下 家里蹲大學 實例方法
這時就要用到@preperty裝飾器,該裝飾器能夠讓一個方法變成屬性調(diào)用。
class School(): name = "家里蹲大學" def test(self): print("實例方法") @property def test_pro(self): print("靜態(tài)屬性") if __name__ == "__main__": s = School() print(s.name) # 注意返回的函數(shù) 千萬別加() s.test_pro # 輸出如下 家里蹲大學 靜態(tài)屬性
從今天以后,在Python編程中,@property廣泛應用在Python類的定義中非常常見。你一看到@property,第一反應就是:@property專門負責把一個方法變成同名屬性的。
感謝各位的閱讀,以上就是“怎么使用@Staticmethod、@Classmethod和@Property類裝飾器”的內(nèi)容了,經(jīng)過本文的學習后,相信大家對怎么使用@Staticmethod、@Classmethod和@Property類裝飾器這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關知識點的文章,歡迎關注!
新聞名稱:怎么使用@Staticmethod、@Classmethod和@Property類裝飾器
文章出自:http://chinadenli.net/article8/ihoiop.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設計、用戶體驗、網(wǎng)站設計、做網(wǎng)站、建站公司、關鍵詞優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)