Python 如何在给定实例方法的情况下获取实例?

Python 如何在给定实例方法的情况下获取实例?,python,class,methods,instance,Python,Class,Methods,Instance,如果您现在只能访问methodReference,您现在可以获得对myInstance的引用吗?尝试以下操作: class MyClass: def myMethod(self): pass myInstance = MyClass() methodReference = myInstance.myMethod 如果您使用的是Python 3: methodReference.im_self 试试这个: class MyClass: def myMetho

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

尝试以下操作:

class MyClass:
    def myMethod(self):
        pass

myInstance = MyClass()

methodReference = myInstance.myMethod
如果您使用的是Python 3:

methodReference.im_self
试试这个:

class MyClass:
    def myMethod(self):
        pass

myInstance = MyClass()

methodReference = myInstance.myMethod
如果您使用的是Python 3:

methodReference.im_self

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

methodReference.__self__
im.*
实例是指为
实例方法定义的属性


定义它的类、功能代码块以及它绑定到的对象…

您可以自己解决这个问题-查看
目录
输出:

methodReference.__self__
>>> dir(mr)
['__call__', ... '__str__', '__subclasshook__', 'im_class', 'im_func', 'im_self']
im.*
实例是指为
实例方法定义的属性

它在其中定义的类、函数代码块以及它绑定到的对象

>>> dir(mr)
['__call__', ... '__str__', '__subclasshook__', 'im_class', 'im_func', 'im_self']
以类似的方式,对于该类:

methodReference.im_self
对于这种代码发现,您应该安装iPython并使用tab,例如,在您的示例myReference中,+tab将给出:

methodReference.im_class
因此,您不必担心记住太多东西-您知道该方法可能是由函数对象提供的,并且从iPython给出的建议中,通常可以明显看出您在寻找什么方法/属性

以类似的方式,对于该类:

methodReference.im_self
对于这种代码发现,您应该安装iPython并使用tab,例如,在您的示例myReference中,+tab将给出:

methodReference.im_class

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

methodReference.im\u self
dir()
是您的朋友)
methodReference.im\u self
dir()
是你的朋友)我稍微喜欢上面我详细介绍的iPython方法的原因是它在屏幕上隐藏了一些特殊的方法/属性和格式。当然,它们在功能上是相当等价的,而且你的建议也没有把用户限制在iPython上。我稍微喜欢上面详述的iPython方法的原因是,它在屏幕上隐藏了一些特殊的方法/属性和格式。当然,它们在功能上是相当等价的,而且你的建议也没有将用户限制在iPython上,这在Python3中不起作用。请参阅@dusan答案。这在Python 3中不起作用。请参阅@dusan answer.old question,但这应该是公认的答案,因为它是唯一为python3提供解决方案的答案。old question,但这应该是公认的答案,因为它是唯一为python3提供解决方案的答案