
1 sillyousu 2014 年 2 月 2 日 Python 本来就没有重载这一说的。 貌似 普通的method 会把 classmethod 覆盖的。 |
3 ritksm 2014 年 2 月 2 日 我想知道这样写的实际意义在哪里。为什么会有一个class method和instance method重名,能举个不是foobar的例子么。。 再说了明明不能重载的嘛,方法重载的意义在于对于静态类型的语言,可以区别不同的方法,但是对于Python直接*args **kwargs不就可以了么,然后在方法逻辑里判断 |
4 ritksm 2014 年 2 月 2 日 |
5 raquelken 2014 年 2 月 2 日 |
6 raquelken 2014 年 2 月 2 日 |
7 raquelken 2014 年 2 月 2 日 <script src="https://gist.github.com/raquelken/938a5e3df4a97a038652.js"></script> |
8 raquelken 2014 年 2 月 2 日 |
9 raquelken 2014 年 2 月 2 日 S**t, 我放弃了 class test: def __init__(self): self.a = 1 self.foo = self._foo @classmethod def foo(cls, p, flag): pass def _foo(self, p): print(self.a) |
10 yangff 2014 年 2 月 2 日 |
11 |
12 orzfly 2014 年 2 月 2 日 |
13 wenLiangcan OP @ritksm 我想写一个豆瓣电台 api 算是 wraper 的类,额,当作练习而已啦。。有些操作可以不登录进行,所以我想登录的话就传入登录信息获得一个实例,不登录就通过 classmethod 操作。当然,也可以用 foo 和 foo_logined 这样区分,可是觉得统一命名比较好看吧。。。。 |
14 wenLiangcan OP @raquelken 原来还可以这样! |
15 ritksm 2014 年 2 月 2 日 感觉应该那么写?然后全部生成一个实例,用内部逻辑去判断是不是登录了。。 http://gist.github.com/8767690 而且就算变成了class method,其实也是可以instance.foo_class_method()的...参见 http://docs.python.org/2/library/functions.html#classmethod 感觉LZ是不是和staticmethod搞混了... 感觉class method基本上都是用来做helper或者工厂方法的...比如上面那个gist的第二个例子 |
16 ritksm 2014 年 2 月 2 日 |
17 wenLiangcan OP |