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