Ответ 1
def isbound(method):
return method.im_self is not None
def instance(bounded_method):
return bounded_method.im_self
Когда пользовательский объект метода созданный путем извлечения пользовательского объект функции из класса, его
im_self
-None
, а объект метода считается несвязанным. Когда он создается путем извлечения пользовательский объект функции из класса через один из его экземпляров, его Атрибутim_self
- это экземпляр и объект метода считается связанным. В любом случае новый метод Атрибутim_class
- это класс из который происходит, и его атрибутim_func
является оригиналом функциональный объект.
В Python 2.6 и 3.0:
Объекты метода экземпляра имеют новые атрибуты для объекта и функции включающий способ; новый синоним для
im_self
составляет__self__
, аim_func
также доступен как__func__
. Старый имена по-прежнему поддерживаются в Python 2.6, но ушли в 3.0.