麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > Python > 正文

Python classmethod()方法

2023-04-24 19:21:36
字體:
來源:轉載
供稿:網友

python classmethod()是Python標準庫中的一個內置方法。在Python中,有三種類型的方法,分別是:實例方法、類方法和靜態方法。

這篇文章首先介紹一下類方法的含義及使用方法。

classmethod()方法是什么

在Python中,類方法是可以使用類名直接調用的方法,類方法可以在類的所有對象中進行共享。classmethod()方法可以把類中的一個方法轉化為類方法,但要求類中定義的那個方法的第一個參數是 cls ,當然這只是約定俗成的,使用其他標識符也可以,主要用于隱式的表示類自身,以調用類的屬性、方法,以及實例化對象等,這點與實例方法中的 self 參數相似。

類方法即可以使用類來調用(如C.f()),又可以使用類的實例來調用(如C().f())。如果類方法由派生類來調用,則派生類的對象將作為classmethod()的第一個參數。

Python中的類方法與Java、C#等中的靜態方法不同,這些問題將在今后的文章中進行探討。

Python classmethod()方法

classmethod()的語法

該方法的語法格式如下:

classmethod(function)

參數

function:用于指定類中轉換為類方法的方法名稱,當然也應該包含類名。

返回值

該函數沒有返回值。

classmethod()使用示例

下面使用實例來說明classmethod()方法的具體使用過程。

class Hello:
    word = "你好"

    def SayHello(cls):
        print(cls.word)

#定義一個實例
h = Hello()
#實例調用SayHello
h.SayHello()
#Hello.SayHello() #這時使用會報錯

#將SayHello指定為類方法
Hello.SayHello= classmethod(Hello.SayHello)
#用實例來調用
h.SayHello() #你好
#用類方法
Hello.SayHello() #你好

#用實例修改word的值
h.word="關注:優雅的代碼"
h.SayHello() #你好
Hello.SayHello() #你好

#用類名修改word的值
Hello.word="優雅的代碼"
h.SayHello() #優雅的代碼
Hello.SayHello() #優雅的代碼

輸出結果如下:(上面代碼為了讓大家看得清楚,使用注釋方法也注釋了輸出內容。)

你好
你好
你好
你好
你好
優雅的代碼
優雅的代碼

從上面的代碼及輸出結果可以看出:

(1)類方法中可以訪問類的變量和方法;

(2)類方法可以使用類名調用,也可以使用類的實例調用;

(3)把一個方法轉換成類方法后,使用實例調用時只能讀取類共享的變量值,無法獲取實例的變量值;

(4)類方法不能獲取實例的變量值,只能讀取類共享的變量值,即類變量的默認值或使用類名調用變量修改的值。

下面再看一個例子:

class Hello:
    word = "你好"

    def SayHello(self):
        print(self.word)

    def Say(cls, w):
        cls.word = w
        cls.SayHello()

Hello.SayHello = classmethod(Hello.SayHello)
Hello.Say = classmethod(Hello.Say)

Hello.SayHello()
Hello.Say("歡迎關注微信訂閱號:優雅的代碼")

輸出結果如下所示:

你好
歡迎關注微信訂閱號:優雅的代碼

這段代碼主要演示類方法帶有其它參數的情況。

classmethod()方法是在Python 2.2版本加進來的,但很明顯這種定義類方法的過程還是很麻煩,在Python2.4版本中使用方法修飾符的方法來實現,即在類中需要定義類方法上面使用@classmethod修飾符來指定該方法為類方法。其基本語法格式如下:

class className:
    @classmethod
    def funname(cls, arg1,arg2,...):
        #方法的相關代碼

上面的@classmethod是funname()方法的修飾符,它指示funname()是一個類方法。下面看一個具體的例子:

class Student:
    age = 23

    @classmethod
    def printAge(cls):
        print(cls.age)

Student.printAge()

輸出結果:

23

使用@classmethod修飾符指定的類方法與上面所講的要求相同。

以上講解了關于Python中classmethod()方法和@classmethod修飾符的作用,如有問題,歡迎留言。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 欧美中文字幕一区二区三区亚洲 | 中国av中文字幕 | 涩涩屋av| 久久99久久99免费视频 | 国产精品欧美日韩一区二区 | 成人在线免费视频播放 | 欧美日本色 | 国产在线精品91 | 99视频在线观看视频 | 免费视频www在线观看 | 欧美成年人在线视频 | 7m视频成人精品分类 | 欧美日韩精品一区二区三区蜜桃 | 欧美成人精品h版在线观看 国产一级淫片在线观看 | 久久亚洲精品久久国产一区二区 | 久久伊人国产精品 | 成年免费在线视频 | 啊~用cao嗯力cao烂我视频 | 色综合网在线观看 | 真人一级毛片免费 | 日韩视频在线观看免费 | 国产精品久久久久久久久久大牛 | 蜜桃久久一区二区三区 | 天海翼四虎精品正在播放 | 免费一区区三区四区 | 久久人人爽人人爽人人片av高清 | 欧美a久久| 国产精品99一区二区 | 石原莉奈日韩一区二区三区 | 国产高潮好爽受不了了夜色 | 日韩av在线播放一区 | 久久久一区二区精品 | 精品视频一区二区三区四区 | 久草在线资源观看 | 亚洲天堂成人在线观看 | 免费黄色大片网站 | 一级片久久免费 | 色婷婷久久久亚洲一区二区三区 | 一级大片一级一大片 | 污版视频在线观看 | 国产 一区 精品 |