【发布时间】:2013-04-02 05:32:25
【问题描述】:
在 pyton 代码中,我有一些对象的绑定方法。只知道这个绑定方法我想知道那个对象的类是什么。有可能吗?
这里是示例代码:
>>> class x:
... def method(self):
... pass
...
>>> x
<class __main__.x at 0xb737d1ac>
>>> x_instance = x()
>>> x_instance
<__main__.x instance at 0xb737c7cc>
>>> boundmethod = x_instance.method
>>> boundmethod
<bound method x.method of <__main__.x instance at 0xb737c7cc>>
>>> str(boundmethod)
'<bound method x.method of <__main__.x instance at 0xb737c7cc>>'
假设我只知道boundmethod。如何确定类是x?
【问题讨论】:
-
看了this的问题后,我知道我可以像
boundmethod.im_self.__class__.__name__一样做某事。有没有更简单的方法? -
为什么会有更简单的方法?为什么要传递绑定方法而不是它们绑定的对象?
-
看着 jamylak 评论我终于找到了解决方案:
boundmethod.im_class.__name__。谢谢。 -
@running.t 下次试试
dir(...),因为你是如此接近,如果你这样做了,你会发现它 -
@Wooble:绑定方法是 Python 世界中的一等公民,并且有非常明显的理由“传递”绑定方法而不是实例 - 例如,作为回调......现在我同意除了 1/ 调试和 2/ 极少数极端情况外,我认为没有太多理由尝试找到绑定实例的类。