最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python靜態(tài)方法和類方法的區(qū)別實(shí)例解析

 更新時(shí)間:2025年09月08日 15:12:10   作者:Lumiron  
本文給大家介紹python靜態(tài)方法和類方法的區(qū)別,結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧

類方法 (Class Method)

1、定義:使用裝飾器 @classmethod 修飾。第一個(gè)參數(shù)必須是 cls,它指向類本身(不是實(shí)例),而不是 self。
2、可以通過(guò)類名直接調(diào)用,也可以通過(guò)實(shí)例調(diào)用(但更推薦用類名調(diào)用,以明確意圖)。無(wú)論通過(guò)哪種方式調(diào)用,cls 參數(shù)都會(huì)自動(dòng)傳入為類本身。
3、權(quán)限:不能訪問(wèn)或修改特定的實(shí)例屬性(因?yàn)樗鼪](méi)有 self),但可以訪問(wèn)和修改類的屬性(通過(guò) cls.attr)。
4、用途:
工廠方法 (Factory Method):作為一種替代構(gòu)造函數(shù)的創(chuàng)建實(shí)例的方式,可以提供更清晰的語(yǔ)義(例如,根據(jù)不同的參數(shù)格式創(chuàng)建對(duì)象)。
操作類級(jí)狀態(tài):當(dāng)方法需要修改或讀取所有實(shí)例共享的類變量時(shí)。
在繼承中,cls 會(huì)指向調(diào)用它的子類,這使得類方法在繼承體系中非常有用。
工廠方法代碼:

class Pizza:
    def __init__(self, ingredients):
        self.ingredients = ingredients
    def __repr__(self):
        return f'Pizza({self.ingredients})'
    @classmethod
    def margherita(cls):
        # `cls` 在這里是 Pizza 類,我們可以調(diào)用它來(lái)創(chuàng)建實(shí)例
        return cls(['mozzarella', 'tomatoes'])
    @classmethod
    def prosciutto(cls):
        return cls(['mozzarella', 'tomatoes', 'ham'])
# 不需要記住配料,直接使用類提供的工廠方法創(chuàng)建特定口味的披薩
pizza1 = Pizza.margherita() # 通過(guò)類調(diào)用
pizza2 = Pizza.prosciutto()
print(pizza1) # Pizza(['mozzarella', 'tomatoes'])
print(pizza2) # Pizza(['mozzarella', 'tomatoes', 'ham'])
# 也可以通過(guò)實(shí)例調(diào)用(不推薦,容易讓人困惑)
obj = Pizza(['cheese'])
pizza3 = obj.margherita()
print(pizza3) # 同樣創(chuàng)建了一個(gè)新的 Pizza 對(duì)象

靜態(tài)方法 (Static Method)

1、定義:使用裝飾器 @staticmethod 修飾。它沒(méi)有強(qiáng)制性的第一個(gè)參數(shù)(既沒(méi)有 self,也沒(méi)有 cls)。
2、調(diào)用:可以通過(guò)類名直接調(diào)用,也可以通過(guò)實(shí)例調(diào)用。
3、權(quán)限:不能訪問(wèn) self 或 cls。因此,它既不能修改實(shí)例狀態(tài),也不能修改類狀態(tài)。它就像一個(gè)定義在類命名空間里的普通函數(shù)。
4、用途:
工具函數(shù):當(dāng)一個(gè)函數(shù)在邏輯上屬于某個(gè)類,但又不需要訪問(wèn)類或?qū)嵗娜魏螖?shù)據(jù)時(shí)。將它放在類內(nèi)部,而不是作為模塊級(jí)的函數(shù),可以更好地組織代碼,表明它與該類在功能上是相關(guān)的。

命名空間管理:將相關(guān)的功能分組到類下面。
工具函數(shù)的代碼:

class Calculator:
    @staticmethod
    def add(x, y):
        return x + y
    @staticmethod
    def multiply(x, y):
        return x * y
# 不需要?jiǎng)?chuàng)建 Calculator 實(shí)例,直接通過(guò)類名調(diào)用
result1 = Calculator.add(5, 3)
result2 = Calculator.multiply(2, 4)
print(result1) # 8
print(result2) # 8
# 也可以通過(guò)實(shí)例調(diào)用(同樣不推薦)
calc_obj = Calculator()
result3 = calc_obj.add(1, 2)
print(result3) # 3

實(shí)例方法、類方法和靜態(tài)方法的區(qū)別

特性實(shí)例方法類方法 (@classmethod)靜態(tài)方法 (@staticmethod)
裝飾器無(wú)@classmethod@staticmethod
第一個(gè)參數(shù)self (實(shí)例對(duì)象)cls (類對(duì)象)無(wú)強(qiáng)制參數(shù)
訪問(wèn)實(shí)例屬性是 (通過(guò) self)
訪問(wèn)類屬性是 (通過(guò) self.class 或類名)是 (通過(guò) cls)
修改實(shí)例狀態(tài)
修改類狀態(tài)
主要用途操作或讀取實(shí)例數(shù)據(jù)作為工廠方法、操作類級(jí)狀態(tài)工具函數(shù)、命名空間組織
調(diào)用方式必須通過(guò)實(shí)例推薦通過(guò)類,也可通過(guò)實(shí)例推薦通過(guò)類,也可通過(guò)實(shí)例

如何選擇方法?

1、需要訪問(wèn)或修改實(shí)例數(shù)據(jù)嗎?

是 -> 使用 實(shí)例方法。

2、不需要訪問(wèn)實(shí)例數(shù)據(jù),但需要訪問(wèn)或修改類數(shù)據(jù)(類屬性),或者需要作為工廠創(chuàng)建實(shí)例嗎?

是 -> 使用 類方法。

3、既不需要訪問(wèn)實(shí)例數(shù)據(jù),也不需要訪問(wèn)類數(shù)據(jù)嗎?

是 -> 使用 靜態(tài)方法。

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

相關(guān)文章

  • Python全棧之模板渲染詳解

    Python全棧之模板渲染詳解

    這篇文章主要為大家詳細(xì)介紹了Python全棧之模板渲染,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-02-02
  • 使用python將微信image下.dat文件解密為.png的方法

    使用python將微信image下.dat文件解密為.png的方法

    這篇文章主要介紹了使用python將微信image下.dat文件解密為.png的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • Python中使用實(shí)現(xiàn)輸出哈沙德數(shù)的多種方法小結(jié)

    Python中使用實(shí)現(xiàn)輸出哈沙德數(shù)的多種方法小結(jié)

    哈沙德數(shù)(Harshad?Number),又稱Niven數(shù),是指一個(gè)自然數(shù),它可以被它的各位數(shù)字之和整除,本文將探討如何使用多種不同的方法來(lái)判斷一個(gè)數(shù)字是否是哈沙德數(shù),感興趣的可以了解下
    2024-01-01
  • Python驗(yàn)證碼識(shí)別處理實(shí)例

    Python驗(yàn)證碼識(shí)別處理實(shí)例

    這篇文章主要介紹了Python驗(yàn)證碼識(shí)別處理實(shí)例,實(shí)現(xiàn)過(guò)程講解很詳細(xì),感興趣的小伙伴們可以參考一下
    2015-12-12
  • 基于Python的Jenkins的二次開(kāi)發(fā)操作

    基于Python的Jenkins的二次開(kāi)發(fā)操作

    這篇文章主要介紹了基于Python的Jenkins的二次開(kāi)發(fā)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-05-05
  • 2020最新pycharm漢化安裝(python工程獅親測(cè)有效)

    2020最新pycharm漢化安裝(python工程獅親測(cè)有效)

    這篇文章主要介紹了2020最新pycharm漢化安裝(python工程獅親測(cè)有效),文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • Python3.4 tkinter,PIL圖片轉(zhuǎn)換

    Python3.4 tkinter,PIL圖片轉(zhuǎn)換

    我們給大家整理了關(guān)于Python3.4 tkinter,PIL圖片轉(zhuǎn)換的相關(guān)完整代碼,大家可以學(xué)習(xí)測(cè)試下。
    2018-06-06
  • Python OpenCV圖像指定區(qū)域裁剪的實(shí)現(xiàn)

    Python OpenCV圖像指定區(qū)域裁剪的實(shí)現(xiàn)

    這篇文章主要介紹了Python OpenCV圖像指定區(qū)域裁剪的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • Django實(shí)現(xiàn)從數(shù)據(jù)庫(kù)中獲取到的數(shù)據(jù)轉(zhuǎn)換為dict

    Django實(shí)現(xiàn)從數(shù)據(jù)庫(kù)中獲取到的數(shù)據(jù)轉(zhuǎn)換為dict

    這篇文章主要介紹了Django實(shí)現(xiàn)從數(shù)據(jù)庫(kù)中獲取到的數(shù)據(jù)轉(zhuǎn)換為dict,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-03-03
  • Python 類與元類的深度挖掘 II【經(jīng)驗(yàn)】

    Python 類與元類的深度挖掘 II【經(jīng)驗(yàn)】

    元類在 Python 中屬于比較深層的黑魔法,在一般的日常應(yīng)用中可能并不常用,但理解其背后的原理對(duì)于理解 Python 面向?qū)ο缶幊桃约耙磺薪詾閷?duì)象的理念很有幫助;如果你需要對(duì)類進(jìn)行深度改造,至少要知道從何入手。
    2016-05-05

最新評(píng)論

湘阴县| 永宁县| 宝丰县| 东港市| 龙江县| 庐江县| 怀来县| 行唐县| 辉县市| 德清县| 桦甸市| 荃湾区| 青川县| 西贡区| 浦县| 阿图什市| 丰县| 临汾市| 武定县| 上杭县| 阳城县| 南岸区| 南京市| 巫溪县| 定襄县| 会昌县| 噶尔县| 辉南县| 德庆县| 建德市| 汉寿县| 类乌齐县| 镇江市| 邓州市| 孝义市| 建德市| 潜江市| 万源市| 阿克| 泽州县| 南京市|