@staticmethod用法

@staticmethod用法

例1:class Cat():

   # @staticmethod
   def breath():
       print('猫会呼吸')


if __name__ == '__main__':
   Cat.breath()
   # cat = Cat()
   # cat.breath()

例2:class Cat():

   @staticmethod
   def breath():
       print('猫会呼吸')


if __name__ == '__main__':
   Cat.breath()
   # cat = Cat()
   # cat.breath()

问:老师两个例子中,加@staticmethod和不加一样能运行,那这静态方法有何用处?为啥都能运行结果。请老师解释并普及知识点

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学,你好。

1、虽然第一种方法没有添加@staticmethod也可以使用类名调用,但是在程序中是会报错的,并且不能使用实例对象调用。同学的代码在定义该方法时没有写参数,因此在使用类调用时没有传递参数是可以运行的。

默认类中的def xx(self)是实例方法,是必须要传入一个参数self的。一般情况下调用只能用实例化对象调用,不能用类调用,但是非要用类调用时,需要将实例化对象传递给self

http://img1.sycdn.imooc.com//climg/5ea4050809ae681804010333.jpg

2、静态方法:主要用于在类中封装一个额外的功能,但是使用时我们并不希望调用的时候还先要创建实例化对象,与类本身没有联系,相当于类中一个独立的函数。

使用装饰器@staticmethod。参数随意,没有“self”和“cls”参数,但是方法体中不能使用类或实例的任何属性和方法;实例对象和类都可以调用。

http://img1.sycdn.imooc.com//climg/5ea4059f09f7c80503980467.jpg

如果我的回答解决了您的疑惑,请采纳!祝学习愉快~~~~

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
1.Python零基础入门
  • 参与学习           人
  • 提交作业       2727    份
  • 解答问题       8160    个

想要进入Python Web、爬虫、人工智能等高薪领域,你需要掌握本阶段的Python基础知识,课程安排带你高效学习轻松入门,学完你也能听得懂Python工程师的行业梗。

了解课程
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师