作者johnjohnlin ()
看板Python
标题[问题] Python 有没有类似 C++ ADL 的功能
时间Mon Oct 26 20:35:26 2015
想请问一下
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://webptt.com/cn.aspx?n=bbs/Python/M.1445862929.A.979.html
1F:推 tiefblau: 不熟namespace 想请教这个会err的逻辑是啥? 10/26 20:49
2F:→ bibo9901: ADL是指根据argument选择同个namespace里function 10/26 21:00
3F:→ bibo9901: 在这里也是不成立的 10/26 21:00
4F:→ uranusjr: 你根本没搞懂 ADL 吧, 同样的东西在 C++ 也行不通啊 10/26 21:29
5F:→ uranusjr: 你想达成的东西从根本上违背了 namespacing, 不可能成立 10/26 21:31
6F:→ johnjohnlin: 嗯,我好像弄错了ADL,毕竟平常用不太到 10/28 11:25
7F:→ johnjohnlin: 其实我只是单纯觉得要打两次 Cls. 很麻烦,有没有 10/28 11:26
8F:→ johnjohnlin: 可以避免的手段? 10/28 11:26
9F:→ uranusjr: 要看你想做什麽, 就你这个例子 Cls 的存在本身就很多余 10/28 21:40
10F:→ uranusjr: 直接宣告成 module-level function 与 variable 就好了 10/28 21:41