2011-02-07 38 views
2

如何獲得對聲明方法的類的引用?在下面的代碼中,我試圖在test中獲得對Classical的引用。在Python中,如何確定在哪個類中聲明瞭方法?

class Classical: 
    def method(): 
     pass 

def test(func): 
    # How can I get a reference to 'Classical' using only 'func'? 
    pass 

test(Classical.method) 

我試過dir() ING和搜索,但沒有成功。有任何想法嗎? (如果很重要,我正在運行Python 3.1)

編輯:更改代碼以使其更有意義。

回答

2

在創建此類時,函數裝飾器test()在類Classical的上下文中執行。在類體中執行代碼時,該類尚不存在,因此無法訪問它。你應該使用class decorator而不是一個函數裝飾器來解決這個問題。

或者,您可以告訴我們您實際想要達到的目標。很可能,會有一個簡單的解決方案。

編輯:要回答您編輯的問題:要訪問未綁定方法所屬的類,可以在CPython 2.x中使用unbound_method.im_class。我不知道這是否可以移植到其他Python實現中,並且很可能有更好的方法來實現您嘗試實現的任何目標。

+0

在類和方法創建後會有方法來確定類嗎?例如,如果在課後我調用`test(Classical.method)``? – zildjohn01 2011-02-07 15:27:14

相關問題