首頁 > 後端開發 > Python教學 > Python 中的靜態方法與實例方法有何不同,以及如何呼叫它們?

Python 中的靜態方法與實例方法有何不同,以及如何呼叫它們?

Linda Hamilton
發布: 2024-12-05 01:12:11
原創
459 人瀏覽過

How Do Static Methods in Python Differ from Instance Methods, and How Are They Invoked?

直接從類別實例呼叫靜態方法

在Python中,靜態方法提供了另一種存取類別方法的方法。它們的行為與實例方法不同,因為它們不需要實例化,並且可以直接透過類別本身存取。

建立靜態方法

定義靜態方法,使用@staticmethod裝飾器。此裝飾器從方法簽名中刪除 self 參數,表示它是靜態方法。下面的程式碼範例示範了這一點:

class MyClass(object):
    @staticmethod
    def the_static_method(x):
        print(x)
登入後複製

靜態方法的呼叫

與實例方法不同,靜態方法可以直接在類別實例或類別上呼叫本身。以下程式碼片段說明了此行為:

MyClass.the_static_method(2)  # outputs 2
MyClass().the_static_method(2)  # also outputs 2
登入後複製

與舊靜態方法定義的比較

舊版本的Python(2.2 和2.3)採用不同的方法來定義靜態方法,使用staticmethod 作為函數而不是裝飾器。然而,這只是為了保持與古老的Python 實現的兼容性所必需的:

class MyClass(object):
    def the_static_method(x):
        print(x)
    the_static_method = staticmethod(the_static_method)
登入後複製

避免使用靜態方法

值得注意的是,應該使用靜態方法節約地。大多數情況下,單獨的頂級函數可以提供更清晰的解決方案。

官方文件

Python 文件對靜態方法的描述如下:

靜態方法不接收隱式第一個參數。若要宣告靜態方法,請使用以下習慣用法:

class C:
    @staticmethod
    def f(arg1, arg2, ...): ...
登入後複製

@staticmethod 形式為函數裝飾器 – 請參閱函數定義中函數定義的描述詳細資訊。

它可以在類別上呼叫(例如 C.f()),也可以在實例上呼叫(例如C().f())。除了其類別之外,該實例將被忽略。

Python 中的靜態方法與 Java 或 C 中的靜態方法類似。有關更高階的概念,請參閱 classmethod()。

有關靜態方法的更多信息,請參閱_標準類型層次結構_中有關標準類型層次結構的文檔。

以上是Python 中的靜態方法與實例方法有何不同,以及如何呼叫它們?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板