如何从绑定方法获取对实例的引用?

时间:2014-07-14 15:45:48

标签: python methods

是否可以访问绑定绑定方法的对象?

class NorwegianBlue(object):

    def hello(self):
        print "Well, he's...he's, ah...probably pining for the fjords"

    def some_method(self):
        pass

thing = NorwegianBlue().some_method
the_instance = ???
thing.im_class.hello(the_instance)

1 个答案:

答案 0 :(得分:2)

绑定方法具有__self__im_self属性:

>>> thing = NorwegianBlue().some_method
>>> thing.__self__
<__main__.NorwegianBlue object at 0x100294c50>
>>> thing.im_self
<__main__.NorwegianBlue object at 0x100294c50>

im_self是旧名称; __self__是Python 3的名称。

您可能会发现inspect module documentation有帮助;它包含每个对象类型的属性表。

reference Data Model documentation中更详细地描述了这些属性。