2013-04-10 48 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

相關問題