[問題] Python 有沒有類似 C++ ADL 的功能

看板Python作者時間10年前 (2015/10/26 20:35), 編輯推噓1(109)
留言10則, 4人參與, 最新討論串1/1
想請問一下 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

10/26 20:49, , 1F
不熟namespace 想請教這個會err的邏輯是啥?
10/26 20:49, 1F

10/26 21:00, , 2F
ADL是指根據argument選擇同個namespace裡function
10/26 21:00, 2F

10/26 21:00, , 3F
在這裡也是不成立的
10/26 21:00, 3F

10/26 21:29, , 4F
你根本沒搞懂 ADL 吧, 同樣的東西在 C++ 也行不通啊
10/26 21:29, 4F

10/26 21:31, , 5F
你想達成的東西從根本上違背了 namespacing, 不可能成立
10/26 21:31, 5F

10/28 11:25, , 6F
嗯,我好像弄錯了ADL,畢竟平常用不太到
10/28 11:25, 6F

10/28 11:26, , 7F
其實我只是單純覺得要打兩次 Cls. 很麻煩,有沒有
10/28 11:26, 7F

10/28 11:26, , 8F
可以避免的手段?
10/28 11:26, 8F

10/28 21:40, , 9F
要看你想做什麼, 就你這個例子 Cls 的存在本身就很多餘
10/28 21:40, 9F

10/28 21:41, , 10F
直接宣告成 module-level function 與 variable 就好了
10/28 21:41, 10F
文章代碼(AID): #1MBXuHbv (Python)
文章代碼(AID): #1MBXuHbv (Python)