首頁 >後端開發 >Python教學 >靜態方法怎麼使用

靜態方法怎麼使用

anonymity
anonymity原創
2019-05-27 11:13:586509瀏覽

靜態方法和類別方法在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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn