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

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

Linda Hamilton
Linda Hamilton原創
2024-12-05 01:12:11400瀏覽

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