我之所以問這個問題,是因為對該答案的評論主題進行了討論。我有90%的方法可以解決問題。In [1]: class A(object): # class named 'A' ...: def f1(self): pass ...:In [2]: a = A() # an instancef1 存在三種不同形式:In [3]: a.f1 # a bound methodOut[3]: <bound method a.f1 of <__main__.A object at 0x039BE870>>In [4]: A.f1 # an unbound methodOut[4]: <unbound method A.f1>In [5]: a.__dict__['f1'] # doesn't existKeyError: 'f1'In [6]: A.__dict__['f1'] # a functionOut[6]: <function __main__.f1>綁定方法,未綁定方法和函數(shù)對象之間的區(qū)別是什么,所有這些都由f1描述?一個人怎么稱呼這三個物體?它們?nèi)绾蜗嗷マD(zhuǎn)化?關(guān)于這些東西的文檔很難理解。
3 回答

翻翻過去那場雪
TA貢獻2065條經(jīng)驗 獲得超14個贊
函數(shù)對象是由函數(shù)定義創(chuàng)建的可調(diào)用對象。綁定方法和未綁定方法都是由點二進制運算符調(diào)用的描述符創(chuàng)建的可調(diào)用對象。
綁定和未綁定的方法對象具有3個主要屬性:im_func
是在類中定義的函數(shù)對象,im_class
是類以及im_self
是類實例。對于未綁定的方法,im_self
為None
。
當綁定方法被調(diào)用時,它將im_func
以im_self
作為第一個參數(shù)的形式調(diào)用,然后是其調(diào)用參數(shù)。未綁定方法僅使用其調(diào)用參數(shù)來調(diào)用基礎函數(shù)。
添加回答
舉報
0/150
提交
取消