0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

python靜態(tài)方法與類方法

python爬蟲知識(shí)分享 ? 來源:python爬蟲知識(shí)分享 ? 作者:python爬蟲知識(shí)分享 ? 2022-03-07 16:56 ? 次閱讀

python靜態(tài)方法與類方法

1. 寫法上的差異

類的方法可以分為:

靜態(tài)方法:有 staticmethod 裝飾的函數(shù)

類方法:有 classmethod 裝飾的函數(shù)

實(shí)例方法:沒有任何裝飾器的普通函數(shù)

舉個(gè)例子,如下這段代碼中,run 普通的實(shí)例方法,eat 是靜態(tài)方法,jump 是類方法。

class Animal:
    def __init__(self, name):
        self.name = name

    def run(self):
        print(f"{self.name}跑起來啦")

    @staticmethod
    def eat():
        print("正在吃飯...")

    @classmethod
    def jump(cls, name):
        print(f"{name}跳起來啦")

這三種方法,在寫法有很大的區(qū)別:

1、普通的實(shí)例方法,在定義時(shí),他的第一個(gè)方法固定是 self,如果是從實(shí)例調(diào)用,那么 self 參數(shù) 不需要傳入,如果是通過類調(diào)用,那么 self 要傳入已經(jīng)實(shí)例化的對(duì)象。

>>> dog=Animal(name="小黑")
>>> dog.run()
小黑跑起來啦
>>> Animal.run(dog)
小黑跑起來啦

2、靜態(tài)方法,在定義時(shí),不需要 self 參數(shù)。

>>> dog=Animal(name="小黑")
>>> dog.eat()
正在吃飯...
>>> Animal.eat()
正在吃飯...

3、類方法,在定義時(shí),第一個(gè)參數(shù)固定是 cls,為 class 的簡(jiǎn)寫,代表類本身。不管是通過實(shí)例還是類調(diào)用類方法,都不需要傳入 cls 的參數(shù)。

>>> dog=Animal(name="小黑")
>>> dog.jump("小黑")
小黑跳起來啦
>>> Animal.jump("小黑")
小黑跳起來啦

2. 方法與函數(shù)區(qū)別

在前面,我們很經(jīng)常提到方法和函數(shù),為免有同學(xué)將他們混為一談,我這里總結(jié)一下他們的區(qū)別。

在 Python 3.x 中,

普通函數(shù)(未定位在類里)和靜態(tài)方法,都是函數(shù)(function )。

實(shí)例方法(@staticmethod)和類方法,都是方法(method )。

這些結(jié)論其實(shí)都可以使用 type 函數(shù)得到驗(yàn)證。

先準(zhǔn)備如下代碼

class Animal:
    def __init__(self, name):
        self.name = name

    def run(self):
        print(f"{self.name}跑起來啦")

    @staticmethod
    def eat():
        print("正在吃飯...")

    @classmethod
    def jump(cls, name):
        print(f"{name}跳起來啦")

def demo_func():
    pass

然后進(jìn)入 Python Console 模式

>>> type(demo_func)  # 普通函數(shù)

>>> type(dog.eat)   # 靜態(tài)方法

>>>
>>> type(dog.run)  # 實(shí)例方法

>>> type(dog.jump)  # 類方法

方法是一種和對(duì)象(實(shí)例或者類)綁定后的特殊函數(shù)。

方法本質(zhì)上還是函數(shù),不同之處在于它與對(duì)象進(jìn)行綁定。

審核編輯:符乾江

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Python中dict支持多個(gè)key的方法

    ? 在Python中,字典(dict)是一種非常強(qiáng)大的數(shù)據(jù)結(jié)構(gòu),它允許我們通過鍵(key)來存儲(chǔ)和檢索值(value)。有時(shí)候,我們可能想要根據(jù)多個(gè)鍵來檢索或操作字典中的數(shù)據(jù)。雖然Python的字典
    的頭像 發(fā)表于 11-29 15:59 ?185次閱讀

    一種半動(dòng)態(tài)環(huán)境中的定位方法

    在非靜態(tài)環(huán)境中進(jìn)行地圖繪制和定位是機(jī)器人學(xué)的基本問題。之前的方法大多關(guān)注靜態(tài)和高度動(dòng)態(tài)的物體,但在半動(dòng)態(tài)環(huán)境中,如果不考慮低動(dòng)態(tài)物體(如停放的汽車和行人),可能會(huì)導(dǎo)致定位失敗。我們提出了語義建圖
    的頭像 發(fā)表于 09-30 14:40 ?288次閱讀
    一種半動(dòng)態(tài)環(huán)境中的定位<b class='flag-5'>方法</b>

    手機(jī)靜態(tài)獨(dú)享ip搭建方法,是如何操作的?

    手機(jī)靜態(tài)獨(dú)享IP的搭建主要涉及到選擇一個(gè)可靠的代理服務(wù)提供商,并從該服務(wù)商處獲取靜態(tài)獨(dú)享IP地址及其配置信息,然后在手機(jī)上進(jìn)行相應(yīng)的網(wǎng)絡(luò)設(shè)置。
    的頭像 發(fā)表于 09-13 09:41 ?448次閱讀
    手機(jī)<b class='flag-5'>靜態(tài)</b>獨(dú)享ip搭建<b class='flag-5'>方法</b>,是如何操作的?

    變頻器靜態(tài)測(cè)試和動(dòng)態(tài)測(cè)試方法

    在變頻器的維護(hù)和故障診斷中,靜態(tài)測(cè)試和動(dòng)態(tài)測(cè)試是兩項(xiàng)不可或缺的步驟。這兩測(cè)試為技術(shù)人員提供了判斷變頻器內(nèi)部組件健康狀況的依據(jù)。 一、靜態(tài)測(cè)試 1. 整流電路測(cè)試 靜態(tài)測(cè)試的第一步涉及
    的頭像 發(fā)表于 08-19 17:47 ?1386次閱讀

    5水晶頭接線方法

    水晶頭的接線方法主要遵循EIA/TIA的布線標(biāo)準(zhǔn),包括T568A和T568B兩種線序。以下是詳細(xì)的接線步驟: 一、準(zhǔn)備工具和材料 網(wǎng)線鉗:用于剪切網(wǎng)線和壓緊水晶頭。 五網(wǎng)線:通常為雙絞線,包含
    的頭像 發(fā)表于 07-25 10:25 ?2942次閱讀

    如何實(shí)現(xiàn)Python復(fù)制文件操作

    Python 中有許多“開蓋即食”的模塊(比如 os,subprocess 和 shutil)以支持文件 I/O 操作。在這篇文章中,你將會(huì)看到一些用 Python 實(shí)現(xiàn)文件復(fù)制的特殊方法。下面我們開始學(xué)習(xí)這九種不同的
    的頭像 發(fā)表于 07-18 14:53 ?435次閱讀

    基于Python的深度學(xué)習(xí)人臉識(shí)別方法

    基于Python的深度學(xué)習(xí)人臉識(shí)別方法是一個(gè)涉及多個(gè)技術(shù)領(lǐng)域的復(fù)雜話題,包括計(jì)算機(jī)視覺、深度學(xué)習(xí)、以及圖像處理等。在這里,我將概述一個(gè)基本的流程,包括數(shù)據(jù)準(zhǔn)備、模型選擇、訓(xùn)練過程、以及測(cè)試與評(píng)估,并附上簡(jiǎn)單的代碼示例。
    的頭像 發(fā)表于 07-14 11:52 ?1280次閱讀

    AB放大器的工作特性和偏置方法

    AB放大器是音頻放大技術(shù)領(lǐng)域中的一重要設(shè)備,其工作特性和偏置方法對(duì)于實(shí)現(xiàn)高質(zhì)量的音頻輸出至關(guān)重要。本文將詳細(xì)闡述AB放大器的工作特性,包括其工作原理、性能優(yōu)勢(shì)以及存在的局限性,并
    的頭像 發(fā)表于 05-23 16:00 ?1173次閱讀

    Go語言中的函數(shù)、方法與接口詳解

    Go 沒有,不過可以為結(jié)構(gòu)體類型定義方法。方法就是一帶特殊的接收者參數(shù)的函數(shù)。方法接收者在它自己的參數(shù)列表內(nèi),位于 func 關(guān)鍵字和
    的頭像 發(fā)表于 04-23 16:21 ?861次閱讀

    Raspberry Pi樹莓派使用Python實(shí)現(xiàn)MQTT通信設(shè)計(jì)

    這次的例子,主要講述如何基于PYTHON的 MQTT 客戶端的使用方法
    的頭像 發(fā)表于 03-14 11:45 ?852次閱讀
    Raspberry Pi樹莓派使用<b class='flag-5'>Python</b>實(shí)現(xiàn)MQTT通信設(shè)計(jì)

    基于Python的地圖繪制教程

    本文將介紹通過Python繪制地形圖的方法,所需第三方Python相關(guān)模塊包括 rasterio、geopandas、cartopy 等,可通過 pip 等方式安裝。
    的頭像 發(fā)表于 02-26 09:53 ?1249次閱讀
    基于<b class='flag-5'>Python</b>的地圖繪制教程

    什么是異步?異步的八種實(shí)現(xiàn)方式

    首先通過MoreExecutors靜態(tài)方法listeningDecorator方法初始化一個(gè)ListeningExecutorService的
    發(fā)表于 02-25 09:52 ?3669次閱讀
    什么是異步?異步的八種實(shí)現(xiàn)方式

    常用的變頻器檢測(cè)方法靜態(tài)測(cè)試和動(dòng)態(tài)測(cè)試

    常用的變頻器檢測(cè)方法靜態(tài)測(cè)試和動(dòng)態(tài)測(cè)試? 變頻器是一種電力調(diào)節(jié)裝置,可以實(shí)現(xiàn)對(duì)電動(dòng)機(jī)的調(diào)速和節(jié)能。在使用變頻器時(shí),經(jīng)常需要對(duì)其進(jìn)行檢測(cè),以確保其正常工作。常用的變頻器檢測(cè)方法主要包括靜態(tài)
    的頭像 發(fā)表于 02-01 15:47 ?4756次閱讀

    網(wǎng)線水晶頭的接線方法和五網(wǎng)線可以混用嗎

    可能會(huì)導(dǎo)致信號(hào)質(zhì)量下降,影響網(wǎng)絡(luò)傳輸?shù)乃俣群头€(wěn)定性。 T568A接線方法 T568A是一種常用的六網(wǎng)線接線方法,它采用的是55678排序方式。具體接線方法如下: 水晶頭的一側(cè),從左至
    的頭像 發(fā)表于 01-31 13:57 ?5025次閱讀

    如何解決Python爬蟲中文亂碼問題?Python爬蟲中文亂碼的解決方法

    如何解決Python爬蟲中文亂碼問題?Python爬蟲中文亂碼的解決方法Python爬蟲過程中,遇到中文亂碼問題是常見的情況。亂碼問題主要是由于編碼不一致所導(dǎo)致的,下面我將詳細(xì)介紹
    的頭像 發(fā)表于 01-12 15:11 ?2469次閱讀