python的容器定制

python的容器类型有:

序列类型(list, tuple, str), 映射类型(dict)都是属于容器类型,里面存放的是各种各样的对象

容器类型的协议:

1.定制不可变容器类型: 例如tuple和str
需要定义__len__()和__getitem__()两个魔法方法

2.定制可变容器类型:例如:list. dict, set
除了__len__()和__getitem__()两个魔法方法之外,还需要定义__setitem__()和__delitem__()两个魔法方法

len(self): 被len()调用时返回容器中元素的个数
getitem(self, key): 获取容器中指定元素的行为,相当于self[key], 就像列表的操作_list[1]
setitem(self, key): **设置 **容器中指定元素的行为,相当于self[key] = value
delitem(self, key): **删除 **容器中指定元素的行为,相当于del self[key]

此外实现了__getitem__()方法的class可以像迭代器一样去迭代,等同于实现了__iter__()和__next__()方法

 class CountList:
     def __init__(self, *args):
             self.values = [x for x in args]
     def __len__(self):
             return len(self.values)
     def __getitem__(self, key):
             return self.values[key]
c1 = CountList(1, 3, 5, 7, 9)
for i in c1:
	print(i)
1
3
5
7
9

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值