23
class MyClass:
    def myMethod(self):
        pass

myInstance = MyClass()

methodReference = myInstance.myMethod

myInstance现在,如果您现在只能访问,您可以获得参考methodReference吗?

4

3 回答 3

31

试试这个:

methodReference.im_self

如果您使用的是 Python 3:

methodReference.__self__
于 2013-01-29T17:43:06.953 回答
8

如果您使用的是 Python 3:

methodReference.__self__

除此以外:

methodReference.im_self

并且以类似的方式,对于班级:

methodReference.im_class

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

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

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

于 2013-01-29T17:45:14.120 回答
1

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

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

im_*实例是指为instance methods...定义的属性

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

于 2013-01-29T17:45:01.863 回答