Reputation:
class MyClass:
def myMethod(self):
pass
myInstance = MyClass()
methodReference = myInstance.myMethod
Now can you get a reference to myInstance
if you now only have access to methodReference
?
Upvotes: 26
Views: 15896
Reputation: 10575
If you are using Python 3:
methodReference.__self__
Otherwise:
methodReference.im_self
and by a similar token, for the class:
methodReference.im_class
For this kind of code discovery you should install iPython and use tab, for instance, in your case myReference.+TAB would give:
In [6]: methodReference. methodReference.im_class
methodReference.im_func methodReference.im_self
Hence, you don't need to worry about remembering things so much - you know that the method is probably provided by the function object and from the suggestions that iPython gives it's usually obvious what method/attribute you're looking for.
Upvotes: 9
Reputation: 142156
You can work this out yourself - have a look at the dir
output:
>>> dir(mr)
['__call__', ... '__str__', '__subclasshook__', 'im_class', 'im_func', 'im_self']
The im_*
instances refer to attributes defined for instance methods
...
The class it was defined in, the function code block, and the object it is bound to...
Upvotes: 1
Reputation: 9273
Try this:
methodReference.im_self
If you are using Python 3:
methodReference.__self__
Upvotes: 42