2019/11/12 02-习题温度转换和购物车实现

面向对象遇到复杂问题的时候非常难分解
在这里插入图片描述
用类来做的话,用staticmethod和classmethod来做比较合适,这个使用类方法或者静态方法就比较可以了
Temperature温度
c2f,摄氏转华氏
f2c
c2k
k2c
f2k

在这里插入图片描述
或者写一个同样的转换,传入两个数值,然后,告诉你两个是什么单位,但是别人会觉得麻烦,不会觉得你这个功能强大有多好,万能工具,但是只用其中一样
在这里插入图片描述
建议这种函数为内部函数,不对外,上面这种是快捷函数,可以很方便调用,真正内部使用靠下面的在这里插入图片描述

仅仅当工具用,classmethod和staticmethod(纯粹当工具用)都可以,因为self会变成cls,先给一个值,保存起来,就需要用实例保存起来
因为self就是cls了

在这里插入图片描述
用实例的方法来做
给一个值,告诉单位
判断传进来的单位的值,应该做什么

在这里插入图片描述在这里插入图片描述
这样就把温度保存下来了
华氏转开氏温度,就需要调用两次

在这里插入图片描述
c2k的参数还需要调整一下
其实我们是需要围绕摄氏度中心来做,所以可以先转换成摄氏度c
现在如果拿到开氏温度能不能拿到摄氏度
能不能把华氏温度也顺道做了
这样要华氏有华氏,要开氏有开氏,要摄氏有摄氏
(你要做的事情就是什么时候需要什么时候做(不需要华氏温度你做了也白做,但是别人就需要,人需要你就立即给了),假设这个计划很费时)
这就是立即求值和惰性求值哪个好,取决于你能否忍受计算时间,超出忍受时间,就需要提前计算

现在是都围绕摄氏度为中心
在这里插入图片描述
下面的参数就需要进行修改了在这里插入图片描述
假如目前传入一个华式温度,执行这一块内容
在这里插入图片描述
调用k2c是否可以
这些就比较像工具类函数,改成这样

在这里插入图片描述
上面的使用方式
现在就是问这个标识符能否实例self调用,classmethod,这个f2c标识符实例就没有了,但是能通过类的字典找到,找到之后是可以调用的
在这里插入图片描述
现在就可以不用初始化就可以当一个工具,直接从摄氏度转温度也可以,又可以作为实例使用,又可以作为工具函数使用,这样就把两个看似不可调和的集成在一起在这里插入图片描述
还有个小问题,如果传入的是华氏度,拿到的是self.f和self.c,但是现在想要直接调用k2c,k2c要求你传入第一参数(没有就需要你自己给)
在这里插入图片描述
一般情况下是这么使用的,通过一个温度把所有的这几个都转换出来,这是属性的访问方式
t.k一使用,告诉你属性找不到

在这里插入图片描述
t.k一使用,告诉你属性找不到
在这里插入图片描述在这里插入图片描述
方法调用问题不大,但是属性调用就出问题了,这么写可以,但是不是用户想要的
在这里插入图片描述
用户才不管你写死的程序,用户的使用方法是具有创造力的,其实这里就暴露出,用户用属性的方式来访问是比较期望的
在这里插入图片描述
需要用属性的描述器来定义一些属性
在这里插入图片描述
使用property,使用只读属性
这样就成了自己调用自己,就出问题了 在这里插入图片描述
修改名字

在这里插入图片描述在这里插入图片描述
记住不要让你定义的属性和下面的属性重名,同名就出问题了在这里插入图片描述在这里插入图片描述
跑一下,还没达到要求
在这里插入图片描述
t.k和t.f在做,调用getter,调用getter的时候在调用这些方法在这里插入图片描述
可以做个判断,判断一下到底有没有,摄氏度是中心,什么状态现在都会转换成摄氏度在这里插入图片描述
下面的就需要做判断
在这里插入图片描述
因为温度有0,是数值的,所以还是需要写 is null比较好,因为if 0是等效false在这里插入图片描述在这里插入图片描述
华氏温度0算一下
在这里插入图片描述
这个类既能当工具用,又能,给一个温度,转成什么温度都可以
在这里插入图片描述在这里插入图片描述
用类访问和实例访问都可以,能当工具用,又能当实例用
也可以临时使用一下
在这里插入图片描述在这里插入图片描述
类似人吃鱼,在场景中是两个事务,一类事务购物车,一类事务是物品,需要模拟把物品放到购物车里(建个容器把东西放进去)(类似carinfo,addcar把信息塞到列表里去)

需要一个商品类item,属性有价格,类别,品牌等
真要描述这些商品是都不一样的

在这里插入图片描述在这里插入图片描述
cmdb,设计数据库一样,记录的东西要太多了
标准库,是几个必须的参数定义好后,大量的参数用kwargs来写,参数太多了,能缺省就缺省
这样收集好就是字典,最后还得从字典,拿到数据塞到数据库里

在这里插入图片描述
每添加一个商品就有一个id,保证里面所有商品都是不同的
在这里插入图片描述
但是在购物的时候,用户根本不关心你这个id是多少,id是给编程者用的在这里插入图片描述
再添加一个类是购物车的类,大家各自用各自的购物车,所以要造很多个购物车实例
add_item加入商品
getallitems清空购物车

在这里插入图片描述
拿这个字典,更新我们的字典,收集的规格全部在kwargs,给这个__dict__相当于动态增加属性
在这里插入图片描述
color就更新进去了,item_spec
在这里插入图片描述
item_spec是故意留的,__spec用了双下划线
在这里插入图片描述
下面又更新了一次
在这里插入图片描述
实例的属性最后装在字典当中,现在把这些值都更新到字典中,相当于在创建属性
在这里插入图片描述
看的清楚点使用__repr__在这里插入图片描述
这是给你看的,并不代表里面有数据,但是必须是字符串 在这里插入图片描述
现在先把购物车实例化造出来
在这里插入图片描述
都的人用大写,有简写,这种情况下该如何操作
直接写一个颜色类是否可以,这种很难描述,就需要量化,最好还是给图例

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
这两个到底表现什么由你自己定
在这里插入图片描述
这个技巧就是如果要当属性用,就更新到实例的字典里去
在这里插入图片描述

编程的时候首先要知道有几个角色,比如购物车和物品,要不要实例化根据具体情况,提供的函数一定要用户用起来比较符合习惯的
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值