python實(shí)例方法、靜態(tài)方法與類方法源碼分析

本篇內(nèi)容介紹了“python實(shí)例方法、靜態(tài)方法與類方法源碼分析”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

站在用戶的角度思考問題,與客戶深入溝通,找到彭澤網(wǎng)站設(shè)計(jì)與彭澤網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、成都外貿(mào)網(wǎng)站建設(shè)公司、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名注冊、網(wǎng)絡(luò)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋彭澤地區(qū)。

一、引言

在學(xué)習(xí)python面向?qū)ο蟮穆飞?,有很多抽象名詞,如果理解不透徹很容易張冠李戴。

二、正文

在正式開始前,先構(gòu)造一個(gè)關(guān)于日期的類,對(duì)于實(shí)例方法、靜態(tài)方法和類方法都已經(jīng)做了標(biāo)注。

class Date:
    def __init__(self, year, month, day):
        self.year = year
        self.month = month
        self.day = day

	# 實(shí)例方法
        def tomorrow(self):
    	    self.day += 1

        # 靜態(tài)方法?。∨袛嘁粋€(gè)日期是否有效
        @ staticmethod
        def valid_date(date_str):
       	    year, month, day = tuple(date_str.split("-"))
            conditions = [
                 int(year) > 0,
           	 0 < int(month) <= 12,
             	 0 < int(day) <= 31,  # 此處為簡化問題不做討論
        	]
       	   if all(conditions):
          	return True
           else:
           	return False

	# 類方法 -- 格式化日期
    	@classmethod
  	def parse_string(cls, date_str):
     	   year, month, day = tuple(date_str.split("-"))
     	   return cls(int(year), int(month), int(day))

1. 實(shí)例方法

實(shí)例方法其實(shí)比較好理解,首先,方法其實(shí)就是函數(shù),也就是說實(shí)例方法是實(shí)例對(duì)象所擁有的函數(shù)功能。什么?不知道實(shí)例對(duì)象是什么?(如果對(duì)于面向?qū)ο筮@個(gè)問題都不太了解的可以點(diǎn)擊此處

你可以把類想象成設(shè)計(jì)圖紙,工程師可以拿著這張圖紙去建造各種摩天大樓,所建造出來的摩天大樓其實(shí)就是實(shí)例對(duì)象。

此處的實(shí)例方法的作用就是日期+1

def tomorrow(self):
	self.day += 1

2.  靜態(tài)方法

想象這樣一個(gè)場景,有很多類似于“2018-8-29”這樣格式的日期,想要通過這一個(gè)類來使用,如果在實(shí)例后每次都要手工再加上一段這樣的代碼:

date_str = "2018-8-29"
y, m, d = tuple(date_str.split("-"))
date = Date(int(y), int(m), int(d))

是不是覺得非常麻煩?其實(shí)對(duì)于這種情況,我們往往會(huì)把這一步驟通過靜態(tài)方法來完成。

    # 靜態(tài)方法 -- 格式化日期
    @staticmethod
    def parse_from_string(date_str):
        year, month, day = tuple(date_str.split("/"))
        return Date(int(year), int(month), int(day))

這樣就方便了很多,但還存在一個(gè)問題,就是返回值中的Date在類名修改后這里也要隨之修改,就會(huì)有些麻煩,怎么解決呢?

答案是:類方法。

如果類方法可以解決這個(gè)問題的話,那靜態(tài)方法還有那些用途呢?

答案是:用于判斷一些固有的屬性

比如判斷一個(gè)日期格式是否有效時(shí)就會(huì)使用靜態(tài)方法

# 靜態(tài)方法?。∨袛嘁粋€(gè)日期是否有效
@ staticmethod
def valid_date(date_str):
    year, month, day = tuple(date_str.split("-"))
    conditions = [
        int(year) > 0,
        0 < int(month) <= 12,
        0 < int(day) <= 31,  # 此處為簡化問題不做討論
    ]
    if all(conditions):
        return True
    else:
        return False

注意靜態(tài)方法的寫法和普通函數(shù)的寫法是一樣的,只是存在于類當(dāng)中,并且前面加了一個(gè)裝飾器@staticmethod

3. 類方法

前面提過類方法的好處,就是忽略掉修改類名帶來的影響

# 類方法 -- 格式化日期
@classmethod
def parse_string(cls, date_str):
    year, month, day = tuple(date_str.split("-"))
    return cls(int(year), int(month), int(day))

注意:此處的cls是形參,只是一種代碼規(guī)范。

“python實(shí)例方法、靜態(tài)方法與類方法源碼分析”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

網(wǎng)頁標(biāo)題:python實(shí)例方法、靜態(tài)方法與類方法源碼分析
網(wǎng)頁路徑:http://muchs.cn/article18/ijdodp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、響應(yīng)式網(wǎng)站網(wǎng)站維護(hù)、軟件開發(fā)、品牌網(wǎng)站制作、網(wǎng)站策劃

廣告

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

成都網(wǎng)站建設(shè)公司