詳解python中靜態方法staticmethod用法

    在開發得時候, 可以使用類對方法進行封裝,如果某一個方法需要訪問到對象得實例屬性,可以把這個方法封裝成一個實例方法。如果某一個方法不需要訪問對象得實例屬性,但是需要訪問到類得類屬性,這個時候就可以考慮把這個方法封裝成一個類方法。一個實例方法, 一個類方法,這是兩種方法類型,但是在開發中還有一種情況,如果要封裝得某一個方法,既不需要訪問到對象得實例屬性,也不需要訪問類得類屬性,這個時候就可以考慮把這個方法封裝成一個靜態方法。

    在開發中,如果類中得某個方法既不需要訪問實例屬性或者調用實例方法,同時也不需要訪問類屬性或者調用類方法,這個時候就可以把這個方法封裝成靜態方法。需要在def關鍵字上方增加一個靜態方法得修飾符,@staticmethod。

    語法格式如下:

    @staticmethoddef 靜態方法名():    pass

    在Python里面靜態方法和我們平時寫得函數def是一樣得。唯一不同之處就是它可以存在于類中,不同實例化類也可以調用。

    需要通過裝飾器 @staticmethod 來進行修飾, 靜態方法既不需要傳遞類對象也不需要傳遞實例對象(形參沒有self/cls ) 。

    靜態方法 也能夠通過 實例對象 和 類對象 去訪問。

    當方法中 既不需要使用實例對象 ( 如實例對象,實例屬性 ) , 也不需要使用類對象 ( 如類屬性、類方法、創建實例等) 時,定義靜態方法

    取消不需要得參數傳遞 ,有利于 減少不必要得內存占存和性能消耗。

     示例代碼:

    class Dog(object):    @staticmethod    def info_print():        print('這是?個狗類,?于創建狗實例....')  wangcai = Dog()# 靜態?法既可以使?對象訪問?可以使?類訪問wangcai.info_print()Dog.info_print()

    運行結果:

    在類中編寫靜態方法和類得普通方法

    class Static(object):    @staticmethod    def test_static():        print('I am staticmethod')     def test_def(self):        print('I am not staticmethod')  #  調用靜態方法Static.test_static() #  實例化調用靜態方法obj = Static()obj.test_static()

    運行結果:

    從上述代碼和運行結果可以看出靜態方法可以直接被調用,且不用加任何參數、self也不要。靜態方法存在得意義其實就是讓函數歸類,緊耦合。

    在類對象中定義得靜態方法:

    class MyClass(object):    # 在類對象中定義得靜態方法    @staticmethod    def tom(age, weight):  # 沒有 self        print(age, weight)     @classmethod    def get_info(cls):        # 通過類對象調用類方法        MyClass.tom(25, 66)     def my_info(self):        # 通過實例對象調用靜態方法        self.tom(26, 77)  # 通過類對象調用靜態方法MyClass.tom(23, 55)  # 23 55 # 實例化mc = MyClass() # 通過實例對象調用靜態方法mc.tom(24, 65)  # 24 65 # 通過類對象調用類方法mc.get_info()  # 25 66 mc.my_info()  # 26 77

    運行結果:

    實例方法、類方法、靜態方法綜合例子

    class MyClass(object):    def __init__(self, name):        self.name = name     def get_info(self):  # 定義實例方法,有 self 參數        print("實例方法")     @classmethod    def get_other(cls):  # 定義實例方法,有 cls 參數        print("類方法")     @staticmethod    def get_my_class():  # 定義靜態方法,無默認參數        print("靜態方法")  # 實例化mc = MyClass("tom") # 調用實例方法mc.get_info()  # 實例方法 # 調用類方法,建議通過 類對象.類方法([實參]) 方法調用MyClass.get_other()  # 類方法 # 調用靜態方法,建議通過 類對象.類方法([實參]) 方法調用MyClass.get_my_class()  # 靜態方法

    運行結果:

    到此這篇關于詳解python中靜態方法staticmethod用法得內容就介紹到這了,更多相關python staticmethod內容請搜索之家以前得內容或繼續瀏覽下面得相關內容希望大家以后多多支持之家!

    聲明:所有內容來自互聯網搜索結果,不保證100%準確性,僅供參考。如若本站內容侵犯了原著者的合法權益,可聯系我們進行處理。
    發表評論
    更多 網友評論1 條評論)
    暫無評論

    返回頂部

    主站蜘蛛池模板: 色婷婷av一区二区三区仙踪林| www一区二区三区| 日本强伦姧人妻一区二区| 久草新视频一区二区三区| 亚洲性无码一区二区三区| 国产一区二区精品久久| 福利一区二区在线| 国产香蕉一区二区在线网站| 亚洲AV日韩AV天堂一区二区三区| www亚洲精品少妇裸乳一区二区| 亚洲AV无码一区二区一二区| 精品无码人妻一区二区免费蜜桃| 综合久久一区二区三区| 精品一区二区三区四区在线| 日本一区二区高清不卡| 国产一区二区三区夜色| 天天看高清无码一区二区三区| 成人一区二区三区视频在线观看| 国产91久久精品一区二区| 免费无码毛片一区二区APP| 亚洲av一综合av一区| 无码少妇一区二区| 无码人妻品一区二区三区精99 | 日韩经典精品无码一区| 在线不卡一区二区三区日韩| 精品无码国产AV一区二区三区| 精品国产一区二区三区| 日韩在线视频一区二区三区 | 日本福利一区二区| 日韩精品一区二区三区毛片| 日本国产一区二区三区在线观看 | 国产自产对白一区| 无码少妇一区二区浪潮免费| 亚洲Av无码国产一区二区| 国产乱码精品一区二区三区香蕉 | 国产日韩精品一区二区在线观看| 好吊妞视频一区二区| 日韩A无码AV一区二区三区| 中文字幕一精品亚洲无线一区| 亚洲色精品aⅴ一区区三区| 3d动漫精品啪啪一区二区中|