2013-04-10 44 views
3

在pyton代码中,我有一个对象的绑定方法。只知道这个绑定的方法,我想知道该对象的类是什么。可能吗?如何知道类的名称,如果我只知道python中的绑定方法?

下面是示例代码:

>>> 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

+0

考虑看看[这](http://stackoverflow.com/questions/4679592/how-to-find-instance-of-a后在python中的方法)问题我知道我可以像'boundmethod.im_self .__ class __.__ name__'这样做。有没有更简单的方法? – 2013-04-10 11:40:59

+0

为什么会有更简单的方法?你为什么传递绑定的方法而不是绑定的对象呢? – geoffspear 2013-04-10 11:43:03

+0

看着jamylak评论我终于找到了解决方案:'boundmethod.im_class .__ name__'。谢谢。 – 2013-04-10 11:43:28

回答

5

如果你想它的名字:

boundmethod.im_class.__name__ 
+1

你好 - 只是寻找一些澄清;如果'boundmethod'连接到一个具有继承层次结构的实例,并且'boundmethod'存在于该层次结构的底部,'boundmethod.im_class'将指向定义它的类,或者它将指向'boundmethod''上课? – 2015-10-01 17:12:49

+0

@GershomMaes我相信它应该指向'boundmethod'的类如果我已经正确地解释了你 – jamylak 2015-10-01 17:43:55

相关问题