静态方法类方法属性方法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了静态方法类方法属性方法相关的知识,希望对你有一定的参考价值。
一、静态方法
首先写一小段代码
想必执行效果大家都知道(David is eating fish.),那我加上@staticmethod试一下。
咦????报错,我下面明明传入了"fish"这个参数。。。,大家都能想到是静态方法起的作用,静态方法实际上跟类就没有什么关系了,把类中的方法变成了静态方法后它就变成了一个单纯的函数,它调用不了类的变量,唯一与类产生关联的是必须通过类去调用。
如果想要传类的一些变量或静态属性也可以,就需要把实例本身传到函数里面去。
二、类方法
执行看效果
不是定义了self.name = name了吗?怎么又报错?加上了类方法怎么调用不到了?
看一下效果
正常了,但是方法里调用的是类变量了。由此可见,类方法只能访问类变量,不能访问实例变量。
三、属性方法
先看一下代码和执行效果
我代码最后的P.eat()相当于调用类中的eat方法,那报错说类型是不能调用的,我先把小括号去掉,就相当于调用变量或属性一样,试一下吧。
执行成功,不再截图。总结一下作用:把一个方法变成一个静态属性,既然是一个属性了就不能通过括号再调用了,仔细一看,我们不加括号调用,那怎么传参数呢?属性可以赋值,我们试一下能不能赋值
执行:报错,不能赋值
其实是能赋值的,但是得通过属性方法的另外一种赋值形式来解决,还得通过@eat.setter写一个eat方法
打印:
修改是没有问题了,再来看一下删除
以上就是属性方法的几种用法,那它在什么时候用呢?比如我想知道一个航班的当前的状态,因为我不是航空公司,我知道调用航空公司的接口才能查到航班的状态,比如去哪儿网想知道航班的状态,它就得连航空公司的接口去查询,想要了解到状态通常需要经历以下几步:
1、连接航空公司的API接口
2、对查询结果进行解析,因为返回的数据可能是任何形式的
3、转成可视化的结果返回给用户
看一下例子:
执行结果:
以上是关于静态方法类方法属性方法的主要内容,如果未能解决你的问题,请参考以下文章