classmethod 使用场合
场景一
在 Date_test 类里面创建一个成员函数, 前面用了 @classmethod
装饰. 它的作用就是有点像静态类, 比静态类不一样的就是它可以传进来一个当前类作为第一个参数 (注意是当前类, 不是当前实例), 另外, 这个参数也是多态的, 即如果是子类调用, 那么这个参数就是子类.
调用:
输出:
这样子等于先调用 get_date()
对字符串进行出来, 然后才使用 Data_test
的构造函数初始化.
这样的好处就是你以后重构类的时候不必要修改构造函数, 只需要额外添加你要处理的函数, 然后使用装饰符 @classmethod
就可以了.
场景二
例如一个 User 类对应数据库中的 user 表. 并且有一个 where 方法, 其作用相当于 sql 的 select * from table where ...
, 此时, 这个 where 方法就可以作为 @classmethod
:
这样, 就可以直接通过调用 User.where()
来取得数据库中的所有用户对象, 而不需要新建一个 User
类的对象之后再调用这个方法.
Last updated