欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解python中@classmethod和@staticmethod方法

 更新時(shí)間:2022年10月14日 10:12:28   作者:shaoyishi  
在python類當(dāng)中,經(jīng)常會(huì)遇到@classmethod和@staticmethod這兩個(gè)裝飾器,那么到底它們的區(qū)別和作用是啥子呢?本文結(jié)合場(chǎng)景分析給大家詳細(xì)講解,感興趣的朋友跟隨小編一起看看吧

在python類當(dāng)中,經(jīng)常會(huì)遇到@classmethod和@staticmethod這兩個(gè)裝飾器,那么到底它們的區(qū)別和作用是啥子呢?具體來(lái)看下。

  • @classmethod :默認(rèn)有一個(gè)cls參數(shù),用類或?qū)ο蠖伎梢哉{(diào)用。
  • @staticmethod:靜態(tài)方法,無(wú)默認(rèn)參數(shù),用類和對(duì)象都可以調(diào)用。

1.@staticmethod:

我們看下代碼:

class A:
    def f1(x):
        print(x)
         
A.f1(2)  # 2  類.函數(shù)

創(chuàng)建一個(gè)類,通過(guò)類調(diào)用函數(shù)。

class A:
    @staticmethod
    def f1(x):
        print(x)
         
A.f1(2)  # 2  類.靜態(tài)方法
A().f1(2)  # 2 對(duì)象.靜態(tài)方法  這種情況下是可以執(zhí)行的,如果上述f1沒(méi)有被staticmethod裝飾那么就會(huì)報(bào)錯(cuò)?。?!

創(chuàng)建一個(gè)類,通過(guò)類調(diào)用函數(shù)。同時(shí),因?yàn)樵摲椒ū籹taticmethod裝飾器裝飾了,那么通過(guò)對(duì)象.方法也是可以調(diào)用的。

所以在類中,通過(guò)@staticmethod裝飾的函數(shù),可以直接被類調(diào)用,也可以被實(shí)例化后的對(duì)象調(diào)用?。。?/p>

同時(shí),發(fā)現(xiàn)@staticmethod裝飾的函數(shù)根本不需要傳遞self這個(gè)參數(shù)。因?yàn)楸籃staticmethod裝飾的函數(shù)是直接綁定在類上而不是對(duì)象上。

2.@classmethod:

class A:
    @classmethod
    def f1(cls,x):
        print(x)
         
A.f1(2)  # 2  類.方法
A().f1(2) # 2  對(duì)象.方法

創(chuàng)建一個(gè)類,通過(guò)類調(diào)用函數(shù)。同時(shí),因?yàn)樵摲椒ū籧lassmethod裝飾器裝飾了,那么通過(guò)對(duì)象.方法也是可以調(diào)用的。但注意,在被裝飾方法中,必須傳遞cls參數(shù)?。。?/p>

class B:
    name = 'bruce'
    age = 16
    @classmethod
    def f1(cls,x):
        print(x)
        print(cls.age)
        print(cls.name)
B().f1(1)
# 1
# 16
# bruce

上述中,說(shuō)明被classmethod裝飾后的方法,通過(guò)cls參數(shù),在該方法中,可以調(diào)用該類的屬性。

class C:
 
    @classmethod
    def f1(cls,x):
        print(x)
        cls().f2()
 
    def f2(self):
        print('hello world')
 
C.f1(1) 或者 C().f1(1)# 1<br># hello world

上述中,說(shuō)明被classmethod裝飾后的方法,通過(guò)cls參數(shù),在該方法中,可以調(diào)用該類的其他方法。

所以在類中,通過(guò)@classmethod裝飾的函數(shù),首先在方法中必須傳遞第一個(gè)參數(shù)cls, 該函數(shù)可以被類直接調(diào)用,也可以被對(duì)象調(diào)用!??!

同時(shí),因?yàn)閭鬟f了一個(gè)cls,所以可以調(diào)用類中的其他屬性和方法。

到此這篇關(guān)于詳解python中@classmethod和@staticmethod方法的文章就介紹到這了,更多相關(guān)python中@classmethod和@staticmethod內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python實(shí)現(xiàn)zencart產(chǎn)品數(shù)據(jù)導(dǎo)入到magento(python導(dǎo)入數(shù)據(jù))

    python實(shí)現(xiàn)zencart產(chǎn)品數(shù)據(jù)導(dǎo)入到magento(python導(dǎo)入數(shù)據(jù))

    這篇文章主要介紹了python實(shí)現(xiàn)zencart產(chǎn)品數(shù)據(jù)導(dǎo)入到magento(python導(dǎo)入數(shù)據(jù)),需要的朋友可以參考下
    2014-04-04
  • python?中?關(guān)于reverse()?和?reversed()的用法詳解

    python?中?關(guān)于reverse()?和?reversed()的用法詳解

    這篇文章主要介紹了python?中?關(guān)于reverse()?和?reversed()的用法介紹,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-01-01
  • django連接Mysql中已有數(shù)據(jù)庫(kù)的方法詳解

    django連接Mysql中已有數(shù)據(jù)庫(kù)的方法詳解

    眾所周知Django較為適合原生開(kāi)發(fā),即通過(guò)該框架搭建一個(gè)全新的項(xiàng)目,通過(guò)在修改models.py來(lái)創(chuàng)建新的數(shù)據(jù)庫(kù)表,下面這篇文章主要給大家介紹了關(guān)于django連接Mysql中已有數(shù)據(jù)庫(kù)的相關(guān)資料,需要的朋友可以參考下
    2022-05-05
  • PyTorch?Autograd的核心原理和功能深入探究

    PyTorch?Autograd的核心原理和功能深入探究

    本文深入探討了PyTorch中Autograd的核心原理和功能,從基本概念、Tensor與Autograd的交互,到計(jì)算圖的構(gòu)建和管理,再到反向傳播和梯度計(jì)算的細(xì)節(jié),最后涵蓋了Autograd的高級(jí)特性
    2024-01-01
  • 一文詳解為什么運(yùn)行Python就是找不到文件路徑

    一文詳解為什么運(yùn)行Python就是找不到文件路徑

    這篇文章主要介紹了在編程中遇到文件路徑找不到問(wèn)題的原因和解決方法,包括路徑錯(cuò)誤、路徑分隔符問(wèn)題、工作目錄錯(cuò)誤、權(quán)限問(wèn)題以及虛擬環(huán)境的影響,并提供了一些實(shí)用的解決方案,通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-01-01
  • python 解決微分方程的操作(數(shù)值解法)

    python 解決微分方程的操作(數(shù)值解法)

    這篇文章主要介紹了python 解決微分方程的操作(數(shù)值解法),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • 基于Python實(shí)現(xiàn)下載網(wǎng)易音樂(lè)代碼實(shí)例

    基于Python實(shí)現(xiàn)下載網(wǎng)易音樂(lè)代碼實(shí)例

    這篇文章主要介紹了基于Python實(shí)現(xiàn)下載網(wǎng)易音樂(lè)代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • python3操作注冊(cè)表的方法(Url protocol)

    python3操作注冊(cè)表的方法(Url protocol)

    使用python操作注冊(cè)表的方法最近學(xué)習(xí)了一下,現(xiàn)在做一下筆記,由于對(duì)Python語(yǔ)言的使用還不是很熟練,所以寫不出高大上的結(jié)構(gòu)
    2020-02-02
  • python pandas利用fillna方法實(shí)現(xiàn)部分自動(dòng)填充功能

    python pandas利用fillna方法實(shí)現(xiàn)部分自動(dòng)填充功能

    這篇文章主要介紹了python pandas通過(guò)fillna方法實(shí)現(xiàn)部分自動(dòng)填充功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-03-03
  • 查找python項(xiàng)目依賴并生成requirements.txt的方法

    查找python項(xiàng)目依賴并生成requirements.txt的方法

    今天小編就為大家分享一篇查找python項(xiàng)目依賴并生成requirements.txt的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07

最新評(píng)論