靜態方法和類別方法在python2.2中被引用,經典類別和新式類別都可以使用。同時,一對內建函數:staticmethod和classmethod被引入,用來轉化類別中某一方法為這兩種方法之一。
靜態方法是指類別中無需實例參與即可呼叫的方法(不需要self參數),在呼叫過程中,無需將類別實例化,直接在類別之後使用.號運算子呼叫方法。
通常情況下,靜態方法使用@staticmethod裝飾器來宣告。
範例程式碼:
class ClassA(object): @staticmethod def func_a(): print('Hello Python') if __name__ == '__main__': ClassA.func_a() # 也可以使用实例调用,但是不会将实例作为参数传入静态方法 ca = ClassA() ca.func_a()
這裡要注意的是,在Python 2 中,如果一個類別的方法不需要self參數,必須宣告為靜態方法,即加上@staticmethod裝飾器,從而不帶實例呼叫它。
而在Python 3中,如果一個類別的方法不需要self參數,不再需要宣告為靜態方法,但是這樣的話只能透過類別去呼叫這個方法,如果使用實例呼叫這個方法會引發異常。
class ClassA(object): def func_a(): print('Hello Python') if __name__ == '__main__': ClassA.func_a() # 以下使用实例调用会引发异常 ca = ClassA() ca.func_a()
異常訊息:
func_a() takes 0 positional arguments but 1 was given
因為func_a沒有宣告為靜態方法,類別實例在呼叫func_a時,會隱式地將self參數傳入func_a,而func_a本身不接受任何參數,進而引發異常。
以上是靜態方法怎麼使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!