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

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

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

類方法 (Class Method)

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

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

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

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

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

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

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

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

如何選擇方法?

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

是 -> 使用 實例方法。

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

是 -> 使用 類方法。

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

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

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

相關文章

  • Python全棧之模板渲染詳解

    Python全棧之模板渲染詳解

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

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

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

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

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

    Python驗證碼識別處理實例

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

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

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

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

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

    Python3.4 tkinter,PIL圖片轉換

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

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

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

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

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

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

    元類在 Python 中屬于比較深層的黑魔法,在一般的日常應用中可能并不常用,但理解其背后的原理對于理解 Python 面向對象編程以及一切皆為對象的理念很有幫助;如果你需要對類進行深度改造,至少要知道從何入手。
    2016-05-05

最新評論

井研县| 沁阳市| 德阳市| 龙陵县| 平果县| 延安市| 从化市| 罗江县| 平乡县| 漾濞| 剑阁县| 五原县| 定兴县| 连云港市| 定陶县| 淮南市| 翁源县| 米林县| 吉隆县| 鹿邑县| 武宣县| 抚州市| 固镇县| 桓仁| 衢州市| 鸡泽县| 于都县| 宣汉县| 奉节县| 巴里| 饶阳县| 宣化县| 柳林县| 定陶县| 弥渡县| 紫阳县| 岱山县| 青冈县| 阿鲁科尔沁旗| 乌兰察布市| 延津县|