关于classmethod的一点理解

内容参考于python @classmethod 的使用场合_dyh4201的博客-CSDN博客

最近在研究部分python模块的源码, 在研究的过程中, 观察到类里面有多个地方存在 @classmethod字段, 这让本来就生涩难懂的源码更加难以理解.

没办法, 只能上网查资料.

从搜索到的结果来看, @classmethod 实际上是将参数转变为一个通用的格式.

class Projectclass(object):
    def __init__(self, value):
        self.value = value

    @classmethod
    def a(self, value):
        values = self(value+1)
        return values

    def show_value(self):
        print(self.value)


if __name__ == "__main__":
    y = Projectclass(2)
    y.show_value()
    t = Projectclass.a(2)
    t.show_value()

结果为:

[root@localhost practice]# python3 1.py
2
3

显然, 通过classmethod的方法, 类没有直接调用__init__函数, 而是通过a(self, value)函数将2 进行加1, 然后才将结果返回给__init__函数进行初始化.

总结: 通过这种方法,能够避免在以后修改类的构造函数, 可以直接在类内添加一个classmethod将参数进行转换成类内需要的格式.

 现在能力还不够强, 暂时只能看出classmethod 这个作用. 暂时记下, 以便以后需要. 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值