看板 Python 關於我們 聯絡資訊
想請問一下 C++ 某些情形下 會根據呼叫 class 自動幫參數塞 namespace 之類的 這個應該叫 ADL 像請問一下 Python 有沒有類似的作法? 想達到的效果大約如下 或是說 Python 裡面因為某些理由所以不太可能呢? 謝謝 class Cls: a, b, c = range(3) @staticmethod def Method(n): return n print Cls.a # print 0 print Cls.Method(Cls.a) # print 0 print Cls.Method(a) # error -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.175.53 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1445862929.A.979.html
tiefblau: 不熟namespace 想請教這個會err的邏輯是啥? 10/26 20:49
bibo9901: ADL是指根據argument選擇同個namespace裡function 10/26 21:00
bibo9901: 在這裡也是不成立的 10/26 21:00
uranusjr: 你根本沒搞懂 ADL 吧, 同樣的東西在 C++ 也行不通啊 10/26 21:29
uranusjr: 你想達成的東西從根本上違背了 namespacing, 不可能成立 10/26 21:31
johnjohnlin: 嗯,我好像弄錯了ADL,畢竟平常用不太到 10/28 11:25
johnjohnlin: 其實我只是單純覺得要打兩次 Cls. 很麻煩,有沒有 10/28 11:26
johnjohnlin: 可以避免的手段? 10/28 11:26
uranusjr: 要看你想做什麼, 就你這個例子 Cls 的存在本身就很多餘 10/28 21:40
uranusjr: 直接宣告成 module-level function 與 variable 就好了 10/28 21:41