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