【Python教程】十五、动物园举办联欢大会哪个动物没有来?类变量

更多教程请私信~

来源:思路实验室 

作者:室长

大家好,欢迎收看思路实验室出品的Python入门教程,我是室长。

我们在上一期讲了如何去自己写一个类,也生成了不同的类实例,但有些目标还没有达成。

比如“把大象装冰箱”的小品后边跟了一个问题:动物园举办联欢大会哪个动物没有来?

或者就像之前动物园的奇葩要求一样,把动物按照不同的规则装到不同的容器里,容器还是数量有限的。

这些问题都涉及到一个动物园的整体情况,而我们目前写的实例的属性,每个实例都是独一份的。我们需要把实例之间的壁垒打通,让它们可以共享一些信息,这时候我们就需要类变量了。

拿刚才第一个问题举例子,动物园举办联欢大会哪个动物没有来?想知道这个答案,我们首先需要一个动物园里动物的名单,以及他们有没有被关起来,这个信息对于动物园里的动物来说应该是共享的,我们就可以把动物名和有没有被关起来的对应关系作为一个字典,存入类变量。

那么在初始化一个动物实例的时候,我们就要向字典中写入键名为“动物名”,值为“没有被关起来”的项。而在给动物执行关起来的操作后,要把相应键的值改为“被关起来了”:

我们稍微改动一下之前的代码,在哺乳动物类下边声明一个空字典变量,这个就是类变量,它的前边不需要加self.

但是我们看__init__函数,我们发现我们调用类变量的时候还是需要在类变量前加上类名的。

我们生成几个动物实例来看一下:

关于最后一句keys函数请参考这里

没什么问题,三只动物都已经登记在册了,那我们来关一只看看:

谁被关了谁没被关,一目了然。这下很容易得出动物园开联欢大会有谁没有来的答案了吧!

那我们在看第二个问题,现在大家应该有思路了吧!

我们可以把冰柜数也作为类变量,每有一个动物被装进冰柜,就把冰柜数减1,减到0以后,原本该装冰柜的都改装对开门冰箱:

可以看到,作为公大象的刘老八,因为动物园冰柜不够而被屈辱地关进了对开门冰箱里……

如果动物园通知,统计每种容器里放了多少动物,这个问题就留给大家自己去联系吧!

经过我们充分地运用了类的功能,我们仅仅使用了50行代码就实现了如此复杂的功能,不得不说,懒人有懒福啊!

室长在开始学习python后有很长一段时间都没有使用过对象,因为觉得常规的变量和函数已经够用了,但当遇到这种复杂的需求时终于体会到了对象的好用之处。不过使用对象对抽象的能力要求会比较高。其实适合自己的才是最好的,有的人觉得不用对象好,当然也可以不用。

介绍过了类变量,我们对对象的初步了解可以告一段落了。这时候我们要回过头来看一看我们学到的概念有没有什么问题。请关注下期:变量真的是变量名+变量值吗?变量的本质

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值