2019/11/19 05-容器化魔术方法

前面的魔术方法可以把实例对象能够伪装的像一个容器,像一个列表或者集合,如何像这些东西,其实只要靠魔术方法就可以了,这几个魔术方法非常重要
在这里插入图片描述
这个是>=0的整数,如果没有bool方法,则会看长度,0就是false
如果有bool方法了,长度是几就是几

在这里插入图片描述
容器时用来放一个个元素的,把数据放在一起
需要拿数据,就需要遍历,或者key,遍历就需要有一个可迭代对象
用这个方法可以把一个类转换成一个容器,而且是个可迭代对象

在这里插入图片描述
如果没实现,则调用__iter__,没有,不遍历怎么知道在不在,判断一个元素在不在就需要做遍历
在这里插入图片描述
找其中一个元素,非常重要,对于序列对象,key是索引
对于set和dict,key就是作为可以hash的,key不存在引发keyerror

在这里插入图片描述
这个就是一种方法都可以操作,字典,列表在这里插入图片描述在这里插入图片描述
a[k]会调用getitem,找不到会__missing__在这里插入图片描述
注释掉就是经常遇到的东西了
在这里插入图片描述
这样找不到key,不会报keyerror,找不到给缺省值在这里插入图片描述
getitem找不到,key,执行该方法
在这里插入图片描述在这里插入图片描述
空字典等效false就是因为下面这个,元素个数为0等效false在这里插入图片描述
是否可以把购物车改成一个容器类

在这里插入图片描述在这里插入图片描述
假如封装什么不想告诉你在这里插入图片描述
但是人家使用的就关心购物车有什么长度,所有内部调用的还是len(sellf.__items)在这里插入图片描述
cart如果要迭代需要加一个__iter__方法
这样告诉你iter你return了一个非迭代的东西

在这里插入图片描述
这样就转换成了一个可迭代东西在这里插入图片描述
加一个4
在这里插入图片描述
能不能使用yield,yield出一个值,一个值被print,把列表作为一个整体yield出去,这里就只能迭代一次在这里插入图片描述
使用yield from
在这里插入图片描述
一般购物车其实可以没有顺序的,现在是把列表的操作转成实例的操作
在这里插入图片描述
那么能不能用索引号来取,对应索引号的商品
在这里插入图片描述
python的列表索引应该是正数,负整数,不支持字符串,但是现在’‘2’'字符串,传进去就不带引号
在这里插入图片描述
为了好理解改成index在这里插入图片描述
拿你包装的容器拿一项,把索引传入进来到容器力拿
在这里插入图片描述
如果要对某一项进行修改
在这里插入图片描述在这里插入图片描述
能否打印2是否在里面
这么写,问一个值有没有在列表中还需要去找

在这里插入图片描述
就这么当容器用即可
在这里插入图片描述在这里插入图片描述
像pathlib里的path类都可以接字符串这么玩,实现一下add做运算符重载在这里插入图片描述
在这里插入图片描述在这里插入图片描述
如何实现连加,等效__add__(),add()
add方法返回实例,可以继续用add方法
在这里插入图片描述
这就是不断往购物车放东西,这种连续的叫链式编程
在这里插入图片描述
这就是容器的相关方法
在这里插入图片描述在这里插入图片描述
如果要把类变成容器,就需要这么做在这里插入图片描述
add实现连加
在这里插入图片描述

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值