如何从以下方法对象中提取“SimpleSubscriber对象”的属性?
<bound method SimpleSubscriber.process of <__main__.SimpleSubscriber object at 0x2ede150>>
此对象已作为函数传递,但是如上所述,它是实例的函数。我想从这个函数所在的实例中引用上面的对象(保存在不同类中的列表中)。
dir()
中的任何内容似乎都没有帮助。
self
返回:
<__main__.SimpleSubscriber object at 0x2ede150>
所以这个实例不能在自己的方法中从其他类中引用它自己。
所以基本上,我试图访问
的属性<__main__.SimpleSubscriber object at 0x2ede150>
这
<bound method SimpleSubscriber.process of <__main__.SimpleSubscriber object at 0x2ede150>>
我正在尝试提取实例的唯一标识符。这可能吗?
答案 0 :(得分:0)
绑定方法保存对原始函数及其绑定的实例的引用;这是它在实例中传递的方式,作为调用方法时的第一个参数。
如果您想访问它所绑定的实例,请使用__self__
属性:
>>> class Foo:
... def bar(self):
... pass
...
>>> bound_bar = Foo().bar
>>> bound_bar
<bound method Foo.bar of <__main__.Foo object at 0x101e5f6d8>>
>>> bound_bar.__self__
<__main__.Foo object at 0x101e5f6d8>
然后,您可以访问该实例所需的任何属性,包括方法本身:
>>> bound_bar.__self__.bar
<bound method Foo.bar of <__main__.Foo object at 0x101e5f6d8>>
这些属性记录在Datamodel reference中,但为了快速概述inspect
module has a handy table。