python類中定義的函數(shù)分為兩大類
1:綁定方法(綁定給誰,誰來調(diào)用就自動將它本身當(dāng)作第一個參數(shù)傳入):
綁定方法分為綁定到類的方法和綁定到對象的方法,具體如下:
1.綁定到類的方法:用classmethod裝飾器裝飾的方法。
為類量身定制
類.boud_method(),自動將類當(dāng)作第一個參數(shù)傳入
(其實(shí)對象也可調(diào)用,但仍將類當(dāng)作第一個參數(shù)傳入)
2.綁定到對象的方法:沒有被任何裝飾器裝飾的方法。
為對象量身定制
對象.boud_method(),自動將對象當(dāng)作第一個參數(shù)傳入
(屬于類的函數(shù),類可以調(diào)用,但是必須按照函數(shù)的規(guī)則來,沒有自動傳值那么一說)
非綁定方法:用staticmethod裝飾器裝飾的方法
1.不與類或?qū)ο蠼壎ǎ惡蛯ο蠖伎梢哉{(diào)用,但是沒有自動傳值那么一說。就是一個普通工具而已
注意:與綁定到對象方法區(qū)分開,在類中直接定義的函數(shù),沒有被任何裝飾器
裝飾的,都是綁定到對象的方法,可不是普通函數(shù),對象調(diào)用該方法會自動傳值,而
staticmethod裝飾的方法,不管誰來調(diào)用,都沒有自動傳值一說
對于綁定方法和非綁定方法舉個例子
在類內(nèi)部定義的函數(shù),分為兩大類:
一:綁定對象:綁定給誰就由誰來調(diào)用,誰來調(diào)用就會把調(diào)用者當(dāng)作第一個參數(shù)自動傳入
綁定到對象的方法:在類內(nèi)定義的沒有被任何裝飾器修飾的
classFoo():
def__init__(self,name):
self.name=name
deftell(self):
print('名字是%s'%self.name)
f=Foo('james')
print(f.tell)
#>
綁定到類的方法:在類內(nèi)定義的被裝飾器classmethod修飾的方法
#def定義的兩個都是綁定到對象的方法
classFoo():
def__init__(self,name):
self.name=name
@classmethod
deffunc(cls):#cls=Foo
print(cls)
print(Foo.func)
#>
二:非綁定方法:沒有自動傳值這一說法,簡單說就是一個普通方法
非綁定方法:不與類或者對象綁定,誰都可以調(diào)用
classFoo():
def__init__(self,name):
self.name=name
@classmethod
deffunc(cls):#cls=Foo
print(cls)
@staticmethod
deffunc1(x,y):
print(x+y)
print(Foo.func1)
#
以上內(nèi)容為大家介紹了Python綁定方法與非綁定方法,希望對大家有所幫助,如果想要了解更多Python相關(guān)知識,請關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。http://www.dietsnews.net/