定義:是一種普通函數(shù),在類的作用域里面時,不會對任何實例類型進行操作,前面必須要加上一個裝飾器
@staticmethod,我們將這種方法就稱為靜態(tài)方法。
classA:
@staticmethod#相當于test=staticmethod(test)
deftest(x,y,z):#把函數(shù)test做成靜態(tài)方法,self和x啥的沒有不同都是參數(shù)名
print(x,y,z)
靜態(tài)方法與綁定方法的區(qū)別:
1、凡是定義在類的內(nèi)部,并且沒有被任何裝飾器修飾過的方法,都是綁定方法:有自動傳值功能;
2、但凡是定義在類的內(nèi)部,并且被staticmethod裝飾器修飾過的方法,都是解除綁定的方法,實際上就函數(shù):
就沒有自動傳值功能了。
使用演示:
print(type(A.test))#類型本質(zhì)就是函數(shù)
A.test(1,2,3)#調(diào)用函數(shù)應(yīng)該有幾個參數(shù)就傳幾個參數(shù)
a=A()#實例化對象a
a.test(3,2,1)#對象a在調(diào)用test,此時test就是一普通函數(shù),有幾個形參就要傳幾個值
print(type(a.test))#類型本質(zhì)就是函數(shù)
--------------輸出結(jié)果-----------------
#A.test的類型就是函數(shù)
123
321
#a.test的類型就是函數(shù)
應(yīng)用場景:
importtime
classDate:
def__init__(self,year,month,day):
self.year=year
self.month=month
self.day=day
@staticmethod
defnow():#用Date.now()的形式去產(chǎn)生實例,該實例用的是當前時間
t=time.localtime()#獲取結(jié)構(gòu)化的時間格式
returnDate(t.tm_year,t.tm_mon,t.tm_mday)#新建實例并且返回
@staticmethod
deftomorrow():#用Date.tomorrow()的形式去產(chǎn)生實例,該實例用的是明天的時間
t=time.localtime(time.time()+86400)
returnDate(t.tm_year,t.tm_mon,t.tm_mday)#新建實例并且返回
a=Date('2021',5,11)#實例化對象,自己定義時間
b=Date.now()#采用當前時間
c=Date.tomorrow()#采用明天的時間
print(a.year,a.month,a.day)#打印實例化對象的時間,年,月,日
print(b.year,b.month,b.day)
print(c.year,c.month,c.day)
----------------輸出結(jié)果---------------------
2022511
2021421
2021422
注意:計算機是不知道年、月、日,這個概念的,計算機只知道秒。so,一天的時間,都得換算成秒。
one_day=24(小時)*60(分)*60(秒)=86400(秒)。
以上內(nèi)容為大家介紹了python靜態(tài)方法,希望對大家有所幫助,如果想要了解更多Python相關(guān)知識,請關(guān)注IT培訓(xùn)機構(gòu):千鋒教育。