2008-09-10 11 views

Répondre

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

def instance(bounded_method): 
    return bounded_method.im_self 

User-defined methods:

Lorsqu'un objet de la méthode définie par l'utilisateur est créé par l'extraction d'un objet de fonction définie par l'utilisateur à partir d'une classe, son im_self l'attribut est None et l'objet méthode est dit non lié. Quand on est créé par l'extraction d'un objet de fonction définie par l'utilisateur à partir d'une classe par une de ses instances, son attribut im_self est le cas, et l'objet de la méthode est dite être lié. Dans les deux cas, le nouveau attribut de la méthode im_class est la classe de qui a lieu la récupération et son attribut im_func est l'objet de la fonction d'origine.

En Python 2.6 and 3.0:

objets de méthode d'instance ont de nouveaux attributs de l'objet et la fonction comprenant le procédé; le nouveau synonyme pour im_self est __self__, et im_func est également disponible en tant que __func__. Les anciens noms sont toujours supportés en Python 2.6, mais sont partis en 3.0.

7

en Python 3 est l'attribut __self__que sur les méthodes ensemble liées. Il n'est pas défini sur None sur des fonctions simples (ou des méthodes indépendantes, qui sont simplement des fonctions simples dans python 3).

Utilisez quelque chose comme ceci:

def is_bound(m): 
    return hasattr(m, '__self__') 
Questions connexes