python繫結方法,未繫結,可呼叫物件型別

2021-08-20 14:39:23 字數 1609 閱讀 7089

#函式物件,方法物件,繫結,未繫結 , 自省 ,python中的可呼叫物件型別

#無論函式還是方法都是物件

#未繫結: class.method() 沒有self

#繫結 : object.method() 自動傳入self

#3.0後 未繫結的函式(方法) 就是乙個普通函式

class testclass:

def method(self,*args):

print(args)

#有三種方式呼叫method

#繫結的方式

t = testclass()

t.method("1")

#未繫結

testclass.method(t , "123") #需要傳入乙個物件

#object.attr 是乙個物件表示式

x = t.method #把例項與方法打包起來 ,實際上就乙個函式位址

x("nihao") #與t.method() 呼叫一樣

#輸出# ('1',)

#('123',)

#('nihao',)

#未繫結方法就是乙個普通函式

class testself:

def normal_func(self,arg):

print("需要self:",arg)

def noself(arg): #需不需要self ,完全由你定

print("普通函式:",arg)

t = testself()

testself.noself(123) #通過類直接呼叫

testself.normal_func(t,13)

#t.noself(123) 這裡將直接報錯, noself中不需要self

#繫結方法的一些呼叫方式

class num:

def __init__(self,value):

self.value = value

def double(self):

return self.value ** 2

x = num(2)

y = num(3)

li = [x.double , y.double] #把繫結方法(函式指標)放在列表裡

for action in li:

print(action()) #action 相當於 x.double , y.double

#繫結方法的自省

func = x.double

print(func.__self__) #通過繫結方法 檢視一下,原來自身的物件是誰.<__main__.num object at 0x0000...>

print(func.__func__) #檢視一下呼叫的函式.#幾種呼叫物件的方式

#1.def somefunc()

#2.繫結的方法

#3.使用__call__

class iamcallable:

def __call__(self):

print("__call__")

i = iamcallable()

i()

Python 繫結與未繫結方法通俗講解

像函式一樣,python中的類方法也是一種物件。由於既可以通過例項也可以通過類來訪問方法,所以在python裡有兩種風格 未繫結的類方法 沒有self 通過類來引用方法返回乙個未繫結方法物件。要呼叫它,你必須顯示地提供乙個例項作為第乙個引數。繫結的例項方法 有self 通過例項訪問方法返回乙個繫結的...

Python中繫結與未繫結的類方法

像函式一樣,python中的類方法也是一種物件。由於既可以通過例項也可以通過類來訪問方法,所以在python裡有兩種風格 未繫結的類方法 沒有self 通過類來引用方法返回乙個未繫結方法物件。要呼叫它,你必須顯示地提供乙個例項作為第乙個引數。繫結的例項方法 有self 通過例項訪問方法返回乙個繫結的...

python 繫結方法和非繫結方法

類中定義的方法大致可以分為兩類 繫結方法和非繫結方法。其中繫結方法又可以分為繫結到物件的方法和繫結到類的方法。一 繫結方法 1.1 物件的繫結方法 在類中沒有被任何裝飾器修飾的方法就是 繫結到物件的方法,這類方法專門為物件定製。class person country china def init ...