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

歡迎訪問 生活随笔!

生活随笔

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

python

[转载] Python3.0中普通方法、类方法和静态方法的比较

發布時間:2025/3/11 python 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [转载] Python3.0中普通方法、类方法和静态方法的比较 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

參考鏈接: Python中的類方法與靜態方法

一、語法區別

?

? ? ? ?剛接觸Python中的面向對象,對于類方法和靜態方法難以區分,通過查找知乎、CSDN論壇,廢了好大的勁思路才逐漸明朗,所以就總結順便分享一下。

?

首先開始編輯代碼

# 普通方法、類方法、靜態方法的比較

# 普通方法、類方法、靜態方法的比較

class Test:

? ? # 定義類Test的屬性

? ? name = 'python'

? ? content = '人生苦短,我用python!'

? ? def normal_method(self): # 普通方法訪問類Text的屬性

? ? ? ? print(self.content)

? ? @classmethod? #類方法訪問Test類的屬性,看到@staticmethod我們就知道這個方法并不需要依賴對象本身的狀態

? ? def class_method(cls):

? ? ? ? print(cls.content)

? ? @staticmethod? #靜態方法,無法訪問Test類的屬性,

? ? def static_method():

? ? ? ? print('content')

?

進行測試一

t = Test()

t.content = '人生苦短,及時行樂'#設置對象t的屬性

?

t.normal_method()

t.class_method()

t.static_method()

?

# 結果

人生苦短,及時行樂

人生苦短,我用python!

content

使用普通方法、類方法和靜態方法都可以通過對象(t)進行調用,但是靜態方法和類方法無法訪問對象的屬性,所以更改對象(t)的屬性僅僅只是對普通方法起作用。

?

進行測試二

# Test.content('name')出現錯誤,普通方法無法通過類調用

Test.class_method()

Test.static_method()

# 結果

人生苦短,我用python!

content

? ?普通方法無法通過類名調用,但靜態方法和類方法是可以的。

?

總結

?

? ? ? ? 三種方法都可以通過對象進行調用,但類方法和靜態方法無法訪問對象屬性,類方法通過對象調用獲取的仍是類屬性(并非對象屬性);普通方法無法通過類名調用,類方法和靜態方法可以,但靜態方法不能進行訪問,僅僅只是通過傳值得方式(與函數調用相同)

?

二、簡單應用

?

通過上面的示例僅僅只是知道三種方法的語法區別,下面繼續看看三種方法的具體應用區別

?

示例:用類來實現部分計算器功能,并計算任意兩個整數的平方和

?

1. 普通方法

class Test:

? ? def __init__(self, num1, num2):

? ? ? ? self.num1 = num1

? ? ? ? self.num2 = num2

? ? def plus(self):

? ? ? ? result = self.num1 + self.num2

? ? ? ? return result

? ? def multiply(self):

? ? ? ? result = self.num1 * self.num2

? ? ? ? return result

t1 = Test(3, 3)

m = t1.multiply()

t2 = Test(4, 4)

n = t2.multiply()

t3 =Test(m, n)

sum = t3.plus()

print(sum)

?

2. 類方法(@classnethod)

class Test:

? ? def __init__(self, num1, num2):

? ? ? ? self.num1 = num1

? ? ? ? self.num2 = num2

? ? def plus(self):

? ? ? ? result = self.num1 + self.num2

? ? ? ? return result

? ? def multiply(self):

? ? ? ? result = self.num1 * self.num2

? ? ? ? return result

? ? @classmethod

? ? def sum(cls, num1, num2):

? ? ? ? t1 = Test(3, 3)

? ? ? ? m = t1.multiply()

? ? ? ? t2 = Test(4, 4)

? ? ? ? n = t2.multiply()

? ? ? ? t3 = Test(m, n)

? ? ? ? print(t3.plus())

Test.sum(3, 4)

3.靜態方法(@staticmethod)

class Test:

? ? def __init__(self, num1, num2):

? ? ? ? self.num1 = num1

? ? ? ? self.num2 = num2

? ? def plus(self):

? ? ? ? result = self.num1 + self.num2

? ? ? ? return result

? ? def multiply(self):

? ? ? ? result = self.num1 * self.num2

? ? ? ? return result

? ? @staticmethod

? ? def sum(num1, num2):

? ? ? ? s = num1 * num1 + num2 * num2

? ? ? ? print(s)

Test.sum(3, 4)

?

4.總結

?

?

? ? ? ?以上三種方法都能實現示例要求的功能。使用類方法時,求和功能的那部分代碼并沒有放在類(Test)中,而是作為類的一個成員方法,這樣的好處是可以簡化對象,增加可讀性(直接通過參數num1、num2來實現最終功能),但整個過程仍須類(self)參與;使用靜態方法時,僅僅需要通過傳遞兩個參數即可實現,單最終結果仍可作為類方法進行訪問。

?

?

5.延伸

?

?

? ? ? ?@classmethod裝飾(類方法): 它的作用就是有點像靜態類,比靜態類不一樣的就是它可以傳進來一個當前類作為第一個參數。

?

? ? ? ?@staticmethod裝飾(靜態方法):經常有一些跟類有關系的功能但在運行時又不需要實例和類參與的情況下需要用到靜態方法。 比如更改環境變量或者修改其他類的屬性等能用到靜態方法。這種情況可以直接用函數解決,但這樣同樣會擴散類內部的代碼,造成維護困難。至于靜態方法就是寫在類里的方法,必須用類來調用(極少數情況下使用,一般都在全局里直接寫函數了)。

總結

以上是生活随笔為你收集整理的[转载] Python3.0中普通方法、类方法和静态方法的比较的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 国产精品伦 | 国产黄 | 高潮疯狂过瘾粗话对白 | 波多野结衣家庭主妇 | 激情网站在线观看 | 国产亚洲色婷婷久久99精品 | 日本爽爽爽爽爽爽在线观看免 | 中文字幕+乱码+中文字幕一区 | 亚洲黄色成人网 | 免费看的毛片 | 一区二区三区中文视频 | 国产3p在线播放 | 免费看片色 | 久久香蕉影视 | 成人av福利 | 波多野吉衣一区 | 尤物网在线 | 精品日本一区二区三区在线观看 | 自拍1区| 一级黄色录象 | 天堂а√在线中文在线 | 日本a一级| 老妇女性较大毛片 | 97免费在线观看 | 蜜臀久久99精品久久一区二区 | 国产女同视频 | 国产第一精品视频 | 国产ts丝袜人妖系列视频 | 国产伦精品一区二区三区免费迷 | 亚洲一区二区观看 | 日本一区二区三区在线免费观看 | 377人体粉嫩噜噜噜 www.av黄色 | 夜夜夜网站 | 免费又黄又爽又色的视频 | 亚洲伦理在线观看 | 潘金莲三级野外 | 欧美美女一区二区三区 | 青青青青青青草 | 日本特级黄色片 | 久操这里只有精品 | 日韩欧美亚洲一区 | 国产人成在线观看 | 向日葵视频在线播放 | 黄色大片网站在线观看 | 午夜激情男女 | 国产精品无码99re | 99热超碰| 阿拉伯性视频xxxx | 精品1区2区3区 | 久久国语精品 | 午夜插插 | 激情四射av| 国产91色在线| 成年人黄色 | 天堂网视频在线观看 | 免费av毛片| 国产精品一区二区免费在线观看 | 91视频精选 | 成人一区二区av | 国产一级在线免费观看 | 欧美伦理一区二区三区 | 嫩草影院懂你的影院 | 夜色综合 | 超碰最新在线 | 国产精品4区 | 欧美a一级 | 永久黄网站 | 久久免费视频2 | 最新激情网站 | 久久五月婷 | 少妇人妻无码专区视频 | 双性人bbww欧美双性 | 国产明星换脸xxxx色视频 | 法国空姐在线观看完整版 | 亚洲精品在线观看视频 | 中文字幕综合 | 天天在线免费视频 | 4438成人网 | 欧美一级看片 | 91香蕉国产在线观看软件 | 三上悠亚人妻中文字幕在线 | av日韩不卡 | caoporen超碰 | 亚洲网色 | 中文字幕av观看 | 一二三四区在线 | 国产精品夜夜爽 | 男人天堂网在线视频 | 97人妻人人澡人人爽人人精品 | 国精产品一区一区三区在线 | 黄色综合网 | 日本精品成人 | 国产婷婷久久 | 亚洲深夜| 中文字幕av一区二区三区谷原希美 | 极品粉嫩小仙女高潮喷水久久 | 成人在线网址 | 久久国产麻豆 | 成人在线视频免费 |