python3類中的裝飾方法怎么選擇

小編給大家分享一下python3類中的裝飾方法怎么選擇,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!

讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業的熱愛。我們立志把好的技術通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:申請域名虛擬主機、營銷軟件、網站建設、渾江網站維護、網站推廣。

@classmethod 用來修飾方法。使用在實例化前與類進行交互,但不和其實例進行交互的函數方法上。

 @staticmethod 用來修飾類的靜態方法。使用在有些與類相關函數,但不使用該類或該類的實例。如更改環境變量、修改其他類的屬性等。

 兩者最明顯的區別,classmethod 必須使用類的對象作為第一個參數,而staticmethod則可以不傳遞任何參數

 

1、@classmethod 類方法

類方法,我們不用通過實例化類就能訪問的方法。而且@classmethod 裝飾的方法不能使用實例屬性,只能是類屬性。它主要使用在和類進行交互,但不和其實例進行交互的函數方法上。

下面,我們要寫一個只在類中運行而不在實例中運行的方法。

簡單示例,讀取私有化類屬性數據,如下:

class Circle(object):
   __pi = 3.14
 
   def __init__(self, r):
       self.r = r
 
   @classmethod
   def pi(cls):
       return cls.__pi
 
   def area(self):
       """
圓的面積
       """
       return self.r ** 2 * self.__pi
 
print(Circle.pi())  # 沒有實例化 能直接訪問pi() 方法
circle1 = Circle(2)
print(circle1.pi()) # 也可以通過實例訪問pi()方法

2、@staticmethod 靜態方法

 @staticmethod 和@classmethod非常的相似,但是@staticmethod 不強制要求傳遞參數(它做的事與類方法或實例方法一樣)。

 @staticmethod使用在有些和類相關函數,但不使用該類或者該類的實例。如更改環境變量、修改其他類的屬性等。

一句話@staticmethod 修飾的方法是放在類外的函數,我們為了方便將他移動到了類里面,它對類的運行無影響。

示例:

class Date(object):
   day = 0
   month = 0
   year = 0
 
   def __init__(self, year=0, month=0, day=0):
       self.day = day
       self.month = month
       self.year = year
 
   @classmethod
   def from_string(cls, date_as_string):
       year, month, day = date_as_string.split('-')
       date = cls(year, month, day)
       return date
 
   @staticmethod
   def is_date_valid(date_as_string):
       """
      用來校驗日期的格式是否正確
       """
       year, month, day = date_as_string.split('-')
       return int(year) <= 3999 and int(month) <= 12 and int(day) <= 31
 
date1 = Date.from_string('2012-05-10')
print(date1.year, date1.month, date1.day)
is_date = Date.is_date_valid('2012-09-18') # 格式正確 返回True

看完了這篇文章,相信你對python3類中的裝飾方法怎么選擇有了一定的了解,想了解更多相關知識,歡迎關注創新互聯行業資訊頻道,感謝各位的閱讀!

分享標題:python3類中的裝飾方法怎么選擇
分享鏈接:http://m.kartarina.com/article16/gecpdg.html

成都網站建設公司_創新互聯,為您提供網站制作自適應網站電子商務ChatGPT用戶體驗響應式網站

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

h5響應式網站建設
主站蜘蛛池模板: 精品多人p群无码| 无码人妻精品一区二区蜜桃百度| 无码精品人妻一区二区三区免费看| 国产精品无码亚洲精品2021| 国产成人精品无码专区| 曰韩精品无码一区二区三区| 久久久久亚洲AV无码专区首| 亚洲AV无码男人的天堂| 特级无码毛片免费视频| 无码人妻一区二区三区免费看| 免费A级毛片无码A∨免费| 人妻丝袜无码专区视频网站| 人妻丰满熟妇无码区免费| 日日摸日日碰人妻无码| 少妇无码一区二区三区| 国产成人无码一区二区在线播放| 伊人久久精品无码麻豆一区| 中文字幕丰满伦子无码| 久久久久亚洲精品无码网址色欲 | 久久午夜无码鲁丝片直播午夜精品| 久久久久成人精品无码中文字幕| 国产精品无码免费视频二三区| 久久久久无码精品亚洲日韩| 亚洲AⅤ无码一区二区三区在线 | 亚洲AV无码码潮喷在线观看 | 日本精品无码一区二区三区久久久 | 免费a级毛片无码a∨性按摩| 日韩精品人妻系列无码专区| 久久久久亚洲AV无码专区体验| 在线观看免费无码视频| 无码av免费一区二区三区| 亚洲精品午夜无码电影网| 亚洲AV无码成人网站久久精品大 | 久久精品?ⅴ无码中文字幕| 久久99久久无码毛片一区二区| 成人A片产无码免费视频在线观看| 精品无码三级在线观看视频| 无码人妻一区二区三区在线| 亚洲国产成人精品无码区花野真一| 无码av天天av天天爽| 国产亚洲精品无码成人|