[英]python namespace hierarchy above object
例如,如果此代碼包含在名為some_module的模塊中
class C:
class C2:
def g(self):
@printNamespaceAbove
def f():
pass
然后將定義printNamespaceAbove,以便此代碼將輸出類似
[some_module,C,C2,g]
有沒有辦法讓這個代碼,提交,有任何輸出-克的身體(包括你想要做印刷裝飾)根本不執行,直到G稱為。 我假設您實際上並不打算單獨使用“此代碼”來輸出任何內容,而是打算添加諸如C.C2()。g()之類的調用[實際上將執行輸出]。
確實沒有一種非常有效的方法-您(好,裝飾器;-)必須從模塊級別開始(您可以通過裝飾器參數f
的全局變量來識別它:它的名稱為f.func_globals['__name__']
並通過其名稱可以在sys.modules
查找它,然后必須遍歷所有可能的名稱鏈,直到找到調用函數為止(例如,通過標准庫中的inspect模塊)。 還要注意,嵌套函數在某些特殊情況下尤其令人頭疼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.