最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解python中靜態(tài)方法staticmethod用法

 更新時(shí)間:2022年07月25日 14:48:59   作者:IT之一小佬  
本文主要介紹了python中靜態(tài)方法staticmethod用法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

在開(kāi)發(fā)的時(shí)候, 可以使用類對(duì)方法進(jìn)行封裝,如果某一個(gè)方法需要訪問(wèn)到對(duì)象的實(shí)例屬性,可以把這個(gè)方法封裝成一個(gè)實(shí)例方法。如果某一個(gè)方法不需要訪問(wèn)對(duì)象的實(shí)例屬性,但是需要訪問(wèn)到類的類屬性,這個(gè)時(shí)候就可以考慮把這個(gè)方法封裝成一個(gè)類方法。一個(gè)實(shí)例方法, 一個(gè)類方法,這是兩種方法類型,但是在開(kāi)發(fā)中還有一種情況,如果要封裝的某一個(gè)方法,既不需要訪問(wèn)到對(duì)象的實(shí)例屬性,也不需要訪問(wèn)類的類屬性,這個(gè)時(shí)候就可以考慮把這個(gè)方法封裝成一個(gè)靜態(tài)方法。

在開(kāi)發(fā)中,如果類中的某個(gè)方法既不需要訪問(wèn)實(shí)例屬性或者調(diào)用實(shí)例方法,同時(shí)也不需要訪問(wèn)類屬性或者調(diào)用類方法,這個(gè)時(shí)候就可以把這個(gè)方法封裝成靜態(tài)方法。需要在def關(guān)鍵字上方增加一個(gè)靜態(tài)方法的修飾符,@staticmethod。

語(yǔ)法格式如下:

@staticmethod
def 靜態(tài)方法名():
    pass

在Python里面靜態(tài)方法和我們平時(shí)寫的函數(shù)def是一樣的。唯一不同之處就是它可以存在于類中,不同實(shí)例化類也可以調(diào)用。

需要通過(guò)裝飾器 @staticmethod 來(lái)進(jìn)行修飾, 靜態(tài)方法既不需要傳遞類對(duì)象也不需要傳遞實(shí)例對(duì)象(形參沒(méi)有self/cls ) 。

靜態(tài)方法 也能夠通過(guò) 實(shí)例對(duì)象 和 類對(duì)象 去訪問(wèn)。

當(dāng)方法中 既不需要使用實(shí)例對(duì)象 ( 如實(shí)例對(duì)象,實(shí)例屬性 ) , 也不需要使用類對(duì)象 ( 如類屬性、類方法、創(chuàng)建實(shí)例等) 時(shí),定義靜態(tài)方法

取消不需要的參數(shù)傳遞 ,有利于 減少不必要的內(nèi)存占存和性能消耗。

 示例代碼:

class Dog(object):
    @staticmethod
    def info_print():
        print('這是?個(gè)狗類,?于創(chuàng)建狗實(shí)例....')
 
 
wangcai = Dog()
# 靜態(tài)?法既可以使?對(duì)象訪問(wèn)?可以使?類訪問(wèn)
wangcai.info_print()
Dog.info_print()

運(yùn)行結(jié)果:

在類中編寫靜態(tài)方法和類的普通方法

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

運(yùn)行結(jié)果:

從上述代碼和運(yùn)行結(jié)果可以看出靜態(tài)方法可以直接被調(diào)用,且不用加任何參數(shù)、self也不要。靜態(tài)方法存在的意義其實(shí)就是讓函數(shù)歸類,緊耦合。

在類對(duì)象中定義的靜態(tài)方法:

class MyClass(object):
    # 在類對(duì)象中定義的靜態(tài)方法
    @staticmethod
    def tom(age, weight):  # 沒(méi)有 self
        print(age, weight)
 
    @classmethod
    def get_info(cls):
        # 通過(guò)類對(duì)象調(diào)用類方法
        MyClass.tom(25, 66)
 
    def my_info(self):
        # 通過(guò)實(shí)例對(duì)象調(diào)用靜態(tài)方法
        self.tom(26, 77)
 
 
# 通過(guò)類對(duì)象調(diào)用靜態(tài)方法
MyClass.tom(23, 55)  # 23 55
 
# 實(shí)例化
mc = MyClass()
 
# 通過(guò)實(shí)例對(duì)象調(diào)用靜態(tài)方法
mc.tom(24, 65)  # 24 65
 
# 通過(guò)類對(duì)象調(diào)用類方法
mc.get_info()  # 25 66
 
mc.my_info()  # 26 77

運(yùn)行結(jié)果:

實(shí)例方法、類方法、靜態(tài)方法綜合例子

class MyClass(object):
    def __init__(self, name):
        self.name = name
 
    def get_info(self):  # 定義實(shí)例方法,有 self 參數(shù)
        print("實(shí)例方法")
 
    @classmethod
    def get_other(cls):  # 定義實(shí)例方法,有 cls 參數(shù)
        print("類方法")
 
    @staticmethod
    def get_my_class():  # 定義靜態(tài)方法,無(wú)默認(rèn)參數(shù)
        print("靜態(tài)方法")
 
 
# 實(shí)例化
mc = MyClass("tom")
 
# 調(diào)用實(shí)例方法
mc.get_info()  # 實(shí)例方法
 
# 調(diào)用類方法,建議通過(guò) 類對(duì)象.類方法([實(shí)參]) 方法調(diào)用
MyClass.get_other()  # 類方法
 
# 調(diào)用靜態(tài)方法,建議通過(guò) 類對(duì)象.類方法([實(shí)參]) 方法調(diào)用
MyClass.get_my_class()  # 靜態(tài)方法

運(yùn)行結(jié)果:

到此這篇關(guān)于詳解python中靜態(tài)方法staticmethod用法的文章就介紹到這了,更多相關(guān)python staticmethod內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

和政县| 淳化县| 景谷| 天门市| 淄博市| 邢台县| 梨树县| 蒙自县| 崇信县| 宝丰县| 临洮县| 汉沽区| 和政县| 县级市| 湖南省| 牟定县| 会东县| 新余市| 海门市| 霍林郭勒市| 柯坪县| 石渠县| 济宁市| 都昌县| 织金县| 永嘉县| 喀喇沁旗| 金平| 康定县| 乌兰浩特市| 咸宁市| 英超| 福建省| 百色市| 于田县| 福鼎市| 元阳县| 洛浦县| 新沂市| 红原县| 陕西省|