2008-09-10 39 views

回答

33
def isbound(method): 
    return method.im_self is not None 

def instance(bounded_method): 
    return bounded_method.im_self 

User-defined methods:

當 通過從類檢索用戶定義 功能對象創建一個用戶定義的方法對象,其 im_self屬性是None而且 方法對象被認爲是未綁定的。 當一個通過經由其實例之一中檢索從 類 用戶定義功能對象創建,其 im_self屬性是實例,並且 方法目標被說成是約束。 在任一情況下,新方法的 im_class屬性是從 的類檢索發生,和 其im_func屬性是原始 功能對象。

在Python 2.6 and 3.0

實例方法對象具有對象和功能 包括該方法新 屬性; im_self的新同義詞 是__self__im_func 也可作爲__func__獲得。 Python 2.6中仍然支持舊的 名稱,但在3.0中不再支持。

7

在Python 3的__self__屬性是對綁定方法集。它不是設置爲None上的普通函數(或未綁定的方法,它們只是python 3中的普通函數)。

使用這樣的事情:

def is_bound(m): 
    return hasattr(m, '__self__') 
相關問題