直接從類別實例呼叫靜態方法
在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中文網其他相關文章!