为了账号安全,请及时绑定邮箱和手机立即绑定

python中@staticmethod和@classmethod区别

标签:
Python


一般来说,要使用某个类的方法,需要先实例化一个对象再调用方法。而使用@staticmethod或@classmethod,就可以不需要实例化,直接类名.方法名()来调用。

这有利于组织代码,把某些应该属于某个类的函数给放到那个类里去,同时有利于命名空间的整洁。


既然@staticmethod和@classmethod都可以直接类名.方法名()来调用,那他们有什么区别呢从它们的使用上来看,

  • @staticmethod不需要表示自身对象的self和自身类的cls参数,就跟使用函数一样。

  • @classmethod也不需要self参数,但第一个参数需要是表示自身类的cls参数。

  •     如果在@staticmethod中要调用到这个类的一些属性方法,只能直接“类名.属性名“或“类名().方法名“。

  •     而@classmethod因为持有cls参数,可以来调用类的属性,类的方法,实例化对象等,避免硬编码。



示例代码如下:

A():    bar = ():        ():        A.bar        A().foo()    ():        .bar        A.bar        ().foo()        A().foo()A.static_foo()A.class_foo()


输入结果如下:

static_foo

A.bar= 1

foo

class_foo

cls.bar= 1

A.bar= 1

foo

foo


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消