博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python中的__len__,__getitem__ __setitem__ __delitem__ __contains__
阅读量:5342 次
发布时间:2019-06-15

本文共 1042 字,大约阅读时间需要 3 分钟。

可变集合需要实现: __len__  __getitem__    __setitem__  __delitem__

不可变集合需要实现: __len__  __getitem__
__len__:返回集合长度
__getitem__(self, item) 使用索引访问元素
__setitem__(self, key, value) 对索引赋值,使用 self[key] = value 。
 
__delitem__(self, key) 删除索引值 del self[key]
    
__contains__ 实现in运算符,如果没有实现这个方法python也会调用__getitem__来使in运算符可用
一个简单的例子:

class TemTest: def __init__(self,):        self.x=[i for i in range(10)] def __len__(self):        return len(self.x) def __getitem__(self, item):        return self.x[item] def __setitem__(self, key, value):        self.x[key]=value def __delitem__(self, key):        del self.x[key] def __contains__(self, item):        return item in self.x def __repr__(self):        return '{}'.format(self.x)
test=TemTest() #实例化print(len(test)) #返回长度print(test[0])   #打印下标0的值print(test[:3])  #切片test[3]=10       #将下标3的值替换为10print(test)del test[3]      #删除下标3的值print(test)print(1 in test)  #测试in运算符print(3 in test)
100[0, 1, 2][0, 1, 2, 10, 4, 5, 6, 7, 8, 9][0, 1, 2, 4, 5, 6, 7, 8, 9]TrueFalse

 

转载于:https://www.cnblogs.com/flashBoxer/p/9645939.html

你可能感兴趣的文章
Openstack+Kubernetes+Docker微服务实践之路--选型
查看>>
操作系统学习---进程管理(二)
查看>>
如何简单形象又有趣地讲解神经网络是什么?知乎
查看>>
MVVM
查看>>
Sql 查询当天、本周、本月记录
查看>>
console.log的一个应用 -----用new方法生成一个img对象和document.createElement方法创建一个img对象的区别...
查看>>
哈希槽
查看>>
AndHand库辅助库
查看>>
plink命令
查看>>
python进阶—OpenCV之常用图像操作函数说明(转)
查看>>
幻灯片会场管理
查看>>
.NET Remoting 体系结构 之 生命周期管理
查看>>
ReactiveCocoa基本组件:理解和使用RACCommand
查看>>
BZOJ 3992 【SDOI2015】 序列统计
查看>>
如何解决 yum安装出现This system is not registered with RHN
查看>>
小型电商系统数据库中的价格类型设计
查看>>
提高查询速度:SQL Server数据库优化方案
查看>>
C语言之指针
查看>>
Web安全之CSRF攻击的防御措施
查看>>
领域驱动设计的基础知识总结
查看>>