python---核心知识9之面向对象案例

1.我们有这样一个需求,就是写一个简单的计算器,实现加减乘除,逻辑并不复杂,现在我们来看看代码应该怎么写:

a:幼儿园同学编码:幼儿园同学拿到需求就开始写,直接上代码

python---核心知识9之面向对象案例_第1张图片

b:小学同学一看代码就不乐意了,明显没有对数值进行判断啊,如果不是整数,肯定不能进行计算啊,除数也不能为零啊,所以小学同学在幼儿园同学代码的基础上进行了修改:小学生很得意的看这代码,很棒;

python---核心知识9之面向对象案例_第2张图片

c:初中童鞋看着代码,一眼就看出了问题所在,有很多重复性的代码应该封装成函数啊,并且初中童鞋学习了语音报读的功能,所以初中童鞋也进行了修改:

python---核心知识9之面向对象案例_第3张图片

d:初中童鞋又拿给他的表哥高中童鞋看看这代码写的咋样,表哥一看你这属性和方法都不安全啊,属性在类的外部都可以随便更改,肯定不行啊,还有就是voice以及judgetype等这几个方法都只是在类内部使用而已,根本不需要外部调用,所以也需要把这几个方法保护一下,所以高中童鞋又改了代码:现在看来需求也实现了,属性和方法也保护起来了,应该没有什么bug了;

python---核心知识9之面向对象案例_第4张图片

e:高中同学又把代码拿给了大学学长,看看大学学长的意见,这时候大学学长就表态了,你这代码看着不怎么优雅,我来给你改更优雅,所以大学学长也修改了代码:把函数调用都写成了装饰器,但是他觉得再用实例调用的地方太不优雅了,每次都要c1去调用,看着很不爽,要是可以一下写完所有的调用就爽了,于是他去问了研究生师兄;

python---核心知识9之面向对象案例_第5张图片
python---核心知识9之面向对象案例_第6张图片

f.研究生师兄说你这叫做链式调用,其实想实现链式调用很简单,只需要每次都返回调用本身就可以实现了,然后又说你这每次报一个数字,没什么意义,我帮你写一下吧:每次把算法都用语音播出来,

python---核心知识9之面向对象案例_第7张图片
python---核心知识9之面向对象案例_第8张图片

g:研究生改好了代码就把代码给了导师看,问问导师还有什么可以改的没,导师说基本没啥改的了,就是获取值那个地方用的函数调用,其实只是个属性而已,直接用属性去获取会更好,然后最后的结果也用语音播放一下吧,再来一个复位的操作也就更好了,所以导师最后也修改了代码:

python---核心知识9之面向对象案例_第9张图片

至此,这一个小案例就结束了;

你可能感兴趣的:(python---核心知识9之面向对象案例)