This answer顯示函數的內置__name__
屬性可以從以外的函數中使用,即print f.__name__
。但是,如何從獲得這個屬性的這個屬性呢?如何從函數內部獲取函數的名字(或者是對函數的「自我」引用)?
僅僅使用不合格__name__
沒有幫助:print __name__
打印__main__
。
使用print f.__name__
從f()
看起來很愚蠢 - 我也可以輸入"f"
。
另外,是否有一種self
對象的函數,即我可以得到一個指針,以通用的方式執行的函數?
我不喜歡在this question中提出的方法 - 它認爲爲這麼簡單的任務攻擊棧不是正確的方法。
動機:我有一個{keyword:function}
字典,從輸入中讀取關鍵字並執行相應的功能。我希望每個函數只執行一次,所以我希望每個函數在執行時都以某種數據結構註冊自己。我知道我可以在字典中做到這一點,但我想爲此使用單獨的數據結構。
Python版本是2.6.4 BTW
只是鏈接到這個答案,它解決了標題中的問題:http://stackoverflow.com/a/5067654/547578 – fossilet 2013-03-23 13:17:37
感謝@fossilet,但正如我在爲這個感覺玩調用堆棧的問題所說。 ..不知道,太hacky – davka 2013-03-24 13:59:28
我覺得很幽默,你發現檢查是「太hacky」。授予導航多維堆棧的語法可能需要閱讀文檔,但它是有效的。這是另一個可能很有趣的黑客:將函數作爲參數傳遞給它自己。 – afeique 2017-10-10 18:24:59