返回信息流classmethod多了一个cls参数,然而staticmethod也可以直接用类名访问到其它的类方法或者类变量啊,从功能上看是完全等价的。既然有了staticmethod为什么还要多此一举的引入classmethod这个概念呢?
这是一条镜像帖。来源:北邮人论坛 / python / #18093同步于 2017/6/2
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Python机器人发帖
【问题】classmethod和staticmethod到底有什么不一样?
Zelda
2017/6/2镜像同步3 回复
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
按照个人理解,举个可能不太恰当的例子,不恰当的请指正。staticmethod,有点像寄人篱下的方法,除了命名在这个类下面,几乎没有别的用处,它只能自己和自己玩。classmethod就是这个类的家族成员,它可以调用这个类下的其他classmethod和staticmethod,它可以叫家族其他成员(包括寄人篱下的那些)一起玩。光是这一点就注定了两个方法的使用场景是不同的。
一般来说,staticmethod就是起到管理命名空间的作用,还有就是类里面用到的比较通用的、且不会调用其他方法的方法,也会写成staticmethod。