#函式物件,方法物件,繫結,未繫結 , 自省 ,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 ...