下面通過一個例子,講解Python靜態(tài)函數(shù)、普通方法、類方法的區(qū)別
#-*-coding:utf-8-*-
#普通方法,類方法,靜態(tài)方法的區(qū)別
__metaclass__=type
classTst:
name='tst'
data='thisisdata'
#普通方法
defnormalMethod(self,name):
printself.data,name
#類方法,可以訪問類屬性
@classmethod
defclassMethod(cls,name):
printcls.data,name
#靜態(tài)方法,不可以訪問類屬性
@staticmethod
defstaticMethod(name):
printname
三種方法都可以通過實(shí)例來調(diào)用,但是靜態(tài)方法和類方法無法訪問實(shí)例屬性,所以更改了tst.data僅對普通方法起了作用
tst=Tst()
tst.data='thisisnew'
tst.normalMethod('name')
tst.staticMethod('name')
tst.classMethod('name')
#結(jié)果
thisisnewname
name
thisisdataname
區(qū)別
普通方法不能通過類名調(diào)用,但是靜態(tài)方法和類方法是可以的
#error普通方法必須通過實(shí)例調(diào)用#
Tst.normalMethod('name')Tst.classMethod('name')
Tst.staticMethod('name')#結(jié)果thisisdataname
name
總結(jié):
1、普通方法,可以通過self訪問實(shí)例屬性
defnormalMethod(self,data)
2、類方法,可以通過cls訪問類屬性
@classmethod
defclassMethod(cls,data)
3、靜態(tài)方法,不可以訪問,通過傳值的方式
@staticmethod
defstaticMethod(data)
以上內(nèi)容為大家介紹了Python靜態(tài)函數(shù)和普通方法的區(qū)別,希望對大家有所幫助,如果想要了解更多Python相關(guān)知識,請關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。