python類中定義的函數(shù)分為兩大類
1:綁定方法(綁定給誰,誰來調(diào)用就自動(dòng)將它本身當(dāng)作第一個(gè)參數(shù)傳入):
綁定方法分為綁定到類的方法和綁定到對(duì)象的方法,具體如下:
1.綁定到類的方法:用classmethod裝飾器裝飾的方法。
為類量身定制
類.boud_method(),自動(dòng)將類當(dāng)作第一個(gè)參數(shù)傳入
(其實(shí)對(duì)象也可調(diào)用,但仍將類當(dāng)作第一個(gè)參數(shù)傳入)
2.綁定到對(duì)象的方法:沒有被任何裝飾器裝飾的方法。
為對(duì)象量身定制
對(duì)象.boud_method(),自動(dòng)將對(duì)象當(dāng)作第一個(gè)參數(shù)傳入
(屬于類的函數(shù),類可以調(diào)用,但是必須按照函數(shù)的規(guī)則來,沒有自動(dòng)傳值那么一說)
非綁定方法:用staticmethod裝飾器裝飾的方法
1.不與類或?qū)ο蠼壎ǎ惡蛯?duì)象都可以調(diào)用,但是沒有自動(dòng)傳值那么一說。就是一個(gè)普通工具而已
注意:與綁定到對(duì)象方法區(qū)分開,在類中直接定義的函數(shù),沒有被任何裝飾器
裝飾的,都是綁定到對(duì)象的方法,可不是普通函數(shù),對(duì)象調(diào)用該方法會(huì)自動(dòng)傳值,而
staticmethod裝飾的方法,不管誰來調(diào)用,都沒有自動(dòng)傳值一說
對(duì)于綁定方法和非綁定方法舉個(gè)例子
在類內(nèi)部定義的函數(shù),分為兩大類:
一:綁定對(duì)象:綁定給誰就由誰來調(diào)用,誰來調(diào)用就會(huì)把調(diào)用者當(dāng)作第一個(gè)參數(shù)自動(dòng)傳入
綁定到對(duì)象的方法:在類內(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定義的兩個(gè)都是綁定到對(duì)象的方法
classFoo():
def__init__(self,name):
self.name=name
@classmethod
deffunc(cls):#cls=Foo
print(cls)
print(Foo.func)
#>
二:非綁定方法:沒有自動(dòng)傳值這一說法,簡單說就是一個(gè)普通方法
非綁定方法:不與類或者對(duì)象綁定,誰都可以調(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://www.em-kal.com/