Python @staticmethod 和 @classmethod 的异同

@staticmethod 和 @classmethod,这两个 function decorator都是用来定义静态函数的。

相同点

调用这两个decorator定义的函数,都不用实例化类,直接用类名就可以调用

不同点

@classmethod 的第一个参数是 cls,因此可以访问类变量,或是用作类厂

而 @staticmethod 除了自身代码是位于类里面之外,对类的情况一无所知;@staticmethod 只适用于不想定义全局函数的情况

建议

一般情况下,尽量使用 @classmethod

Sample

class StaticClassMethodSample():
    my_class_var = 3
    @staticmethod
    def my_staticmethod():
        print StaticClassMethodSample.my_class_var

    @classmethod
    def my_classmethod(cls):
        print cls.my_class_var

(原文地址: http://u50.cn/blog/python-staticmethod-%E5%92%8C-classmethod-%E7%9A%84%E5%BC%82%E5%90%8C
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值