2008-09-10 32 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__') 
相关问题