2014-03-25 68 views
1

我有一個類調用另一個類的功能,像這樣:獲取主叫類在Python

self.pool.get('some_value') 

如何獲取get函數中調用者類?前

感謝,

+0

你想要調用者類或調用者對象嗎?你爲什麼需要這個?爲什麼你不能將它作爲參數傳遞給被調用函數(被調用者)? – batbrat

+0

你的意思是調用者對象引用,對吧?或者你的意思是用於實例化調用者對象的實際類名稱? – bosnjak

+0

無論如何,這可能是你想要的:http://stackoverflow.com/questions/17065086/how-to-get-the-caller-class-name-inside-a-function-of-another-class-in- python – bosnjak

回答

3

您可以通過inspect做到這一點。該get()功能的內容可以是:

import inspect 
myCaller = inspect.currentframe().f_back.f_locals['self'] 

之後,你有來電的情況下通過myCaller refered來。

免責聲明:這是不是一個很好的做法,因爲它破壞了封裝的整個點。

+0

很好的答案,尤其是免責聲明。在您知道的任何情況下,這種方法是否可能失敗/中斷?它看起來很標準,所以我想它不應該。 – batbrat

+0

謝謝。我不知道這樣的情況,但是再一次,我避免了這些解決方案,所以我沒有完全測試它。 – bosnjak

+0

Thx @勞倫斯,我終於找到了我想要使用檢查的課程, ,但它似乎是一個表現豬,但我仍然會使用它。 請告訴我,如果你有更好的解決方案,謝謝:) – Edxz