如何获取实例给出实例的方法?

时间:2013-01-29 17:41:05

标签: python class methods instance

class MyClass:
    def myMethod(self):
        pass

myInstance = MyClass()

methodReference = myInstance.myMethod

如果您现在只能访问myInstance,现在可以获得对methodReference的引用吗?

3 个答案:

答案 0 :(得分:18)

试试这个:

methodReference.im_self

如果您使用的是Python 3:

methodReference.__self__

答案 1 :(得分:7)

methodReference.im_self

并以类似的方式,为班级:

methodReference.im_class

对于这种代码发现,您应该安装iPython并使用tab,例如,在您的情况下myReference。+ TAB会给出:

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

因此,您不必担心记住这么多东西 - 您知道该方法可能是由函数对象提供的,而且iPython给出的建议通常很明显,您正在寻找什么方法/属性。

答案 2 :(得分:0)

你可以自己解决这个问题 - 看一下dir输出:

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

im_*个实例引用为instance methods ...

定义的属性

它定义的类,功能代码块,以及它绑定的对象......