日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

浅谈python中的一般方法、静态方法(staticmethod)和类方法(classmethod)

發布時間:2023/12/4 python 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 浅谈python中的一般方法、静态方法(staticmethod)和类方法(classmethod) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我們先來簡單談談python類中一般方法、靜態方法和類方法的區別。

1、類中的一般方法

? ? 一般方法在定義的時候,需要有表示類實例的參數(通常以self表示,例如def foo(self,arg1,arg2……)),一般方法不能通過類名.方法名()來調用,必須先創建類的實例,然后通過實例.方法名()來調用。

2、類中的靜態方法

????類中的靜態方法用“@staticmethod”來修飾,靜態方法在定義的時候,不需要表示類的實例,可想類外的方法定義一樣。靜態方法可以通過類名.方法名()實例.方法名()調用。

3、類中的類方法

? ? 類方法用“@classmethod”來修飾,類方法在定義的時候,需要有表示類對象的參數。類方法也可以通過類名.方法名()實例.方法名()調用。(注意:python中,類也是一個對象,這里所說的類對象是指類本身,而非類實例化得對象)


下面我們來看看實際例子:

首先,定義一個類:

class?TestMethod(object):??#一般方法、靜態方法和類方法與是否新式類無關,這里我們舉例用了新式類,但要注意,以下分析同樣適用于經典類def?test(self):????????#這里的self參數是必須的,它表示一個類的實例,但并不一定要用字符串“self”來表示,可以用任意字符表示,只是我們通常使用self表示print("object")?@classmethoddef?test2(clss):???????#這里的clss參數意思必須的,它表示一個類對象,通常該形參我們中“cls”表示print("class")@staticmethoddef?test3():???????????#這里可以不需要任何形參print("static")

首先我們用類名.方法名()來調用:

結果如下:

>>>?TestMethod.test() Traceback?(most?recent?call?last):File?"<stdin>",?line?1,?in?<module> TypeError:?unbound?method?test()?must?be?called?with?TestMethod?instance?as?first?argument?(got?nothing?instead) >>>?TestMethod.test2() class >>>?TestMethod.test3() static

可以看到,一般方法test()調用異常,必須通過實例來調用


接著我們再用實例調用:

>>>?t?=?TestMethod() >>>?t.test() object >>>?t.test2() class >>>?t.test3() static


轉載于:https://blog.51cto.com/ninakesi/1706906

總結

以上是生活随笔為你收集整理的浅谈python中的一般方法、静态方法(staticmethod)和类方法(classmethod)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。