DAY8类方法和静态方法

类方法

类方法是指类对象所拥有的方法,需要用装饰器@classmethod来标识其为类方法。对于类方法,第一个参数必须是类对象,一般以cls作为第一个参数。类方法可以通过类对象,实例对象调用

案例:
在这里插入图片描述
类方法主要可以对类属性进行访问、修改

实操
在这里插入图片描述
在这里插入图片描述
如果通过实例对象去访问这个方法,可以吗?
答案是可以的
在这里插入图片描述
在这里插入图片描述
在类方法里面可以修改类属性吗?
在这里插入图片描述
可以看到修改成功
在这里插入图片描述
静态方法

静态方法是指类对象所拥有的方法,需要用@staticmethod来表示静态方法,静态方法不需要传任何参数。

案例
在这里插入图片描述
实操
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意:一般不会通过实例对象来访问静态方法,这样没有任何意义

为什么要使用静态方法呢?

由于静态方法来存放逻辑性的代码,本身和类已经实例对象没有交互,也就是说,在静态方法中,不会涉及到类中方法和属性的操作。
数据资源能得到有效的充分利用

例子
返回当前的系统时间
在这里插入图片描述
我们可以看到,虽然这里写了init函数,但并没有实例化属性所以也并没有用到,showTime是作为一个单独的、独立的模块在运行,这也是静态方法存在的意义在这里插入图片描述
但如果你就是想要用实例对象来调用,那也是可以的
在这里插入图片描述
在这里插入图片描述
但我们可以观察到并没有用,因为静态方法中已经设定了时间取得是localtime,所以完全没有必要用实例对象去访问静态方法。

类方法、实例方法、静态方法对比
1、类方法的第一个参数是类对象cls,通过cls引用的类对象的属性和方法。 @classmethod来修饰
2、实例方法的第一个参数是实例对象self,通过self引用的可能是类属性,也有可能是实例属性【具体情况具体分析】,不过在存在相同名称的类属性和实例属性的情况下,实例属性优先级更高。
3、静态方法中不需要额外定义参数,因此在静态方法中引用类属性的话,必须通过类对象来引用。@staticmethod来修饰

来试一试带参数的静态方法
(在静态方法中的第一个实操里面添加)
在这里插入图片描述
在这里插入图片描述
所以说带不带参数并不是强制性的,而是根据自己决定

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值