Подтвердить что ты не робот

Как получить экземпляр с помощью метода экземпляра?

class MyClass:
    def myMethod(self):
        pass

myInstance = MyClass()

methodReference = myInstance.myMethod

Теперь вы можете получить ссылку на myInstance, если у вас есть только доступ к methodReference?

4b9b3361

Ответ 1

methodReference.im_self

и аналогичным токеном для класса:

methodReference.im_class

Для такого рода обнаружения кода вы должны установить iPython и использовать вкладку, например, в вашем случае myReference. + TAB даст:

In [6]: methodReference. methodReference.im_class 
methodReference.im_func   methodReference.im_self

Следовательно, вам не нужно беспокоиться о том, чтобы запомнить все так много - вы знаете, что метод, вероятно, предоставляется объектом функции, и из предложений, которые iPython дает, обычно очевидно, какой метод/атрибут вы ищете.

Ответ 2

Попробуйте следующее:

methodReference.im_self

Если вы используете Python 3:

methodReference.__self__

Ответ 3

Вы можете это сделать самостоятельно - посмотрите на вывод dir:

>>> dir(mr)
['__call__', ... '__str__', '__subclasshook__', 'im_class', 'im_func', 'im_self']

Примеры im_* относятся к атрибутам, определенным для instance methods...

Класс, в котором он был определен, блок кода функции и объект, к которому он привязан...