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