__getitem__本质上将一个对象具有字典功能

案例一:

class Text__getitem__():def __init__(self):passdef __len__(self):return 3def __getitem__(self, key):if key.startswith("abc"):return "abc"elif key.startswith("bcd"):return "bcd"else:return "nonono"
obj = Text__getitem__()
print(obj["abc"])输出:abc

案例二:

class Text__getitem__():def __init__(self):passdef __len__(self):return 3def __getitem__(self, key):if key.startswith("abc"):return "abc"elif key.startswith("bcd"):return "bcd"else:return "nonono"
obj = Text__getitem__()
print(obj["abc"])for k, v in enumerate(obj):print(k, v)输出:
abc
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-90-24e3e74a5609> in <module>14 print(obj["abc"])15
---> 16 for k, v in enumerate(obj):17     print(k, v)<ipython-input-90-24e3e74a5609> in __getitem__(self, key)5         return 36     def __getitem__(self, key):
----> 7         if key.startswith("abc"):8             return "abc"9         elif key.startswith("bcd"):AttributeError: 'int' object has no attribute 'startswith'

案例三:

class Text__getitem__():def __init__(self):passdef __len__(self):return 3def __getitem__(self, key):if key < 0 or key >= 3: raise IndexErrorif key == 1:return "abc"elif key == 2:return "bcd"else:return "nonono"
obj = Text__getitem__()
for k, v in enumerate(obj):print(k, v)输出:
0 nonono
1 abc
2 bcd这两句代码非常重要,否则就会key值就会一直循环下去。
if key < 0 or key >= 3: raise IndexError

案例四、

class Text__getitem__():def __init__(self):passdef __len__(self):return 3def __getitem__(self, key):if key == 1:return "abc"elif key == 2:return "bcd"else:return "nonono"
obj = Text__getitem__()
for k, v in enumerate(obj):print(k, v)输出:
0 nonono
1 abc
2 bcd
3 nonono
4 nonono
5 nonono
6 nonono
7 nonono
8 nonono
9 nonono
10 nonono
11 nonono
12 nonono
13 nonono
14 nonono
15 nonono
16 nonono
17 nonono
18 nonono
19 nonono
20 nonono
21 nonono
……

__getitem__的作用相关推荐

  1. python 类中的 __getitem__方法

    经常会遇到python类中遇到一些特殊的方法,最常见的就是__ini__方法,想必大家都遇到过,今天来谈谈另外一种非常好用的类方法--__getitem__ 来点干货, __getitem__的作用是 ...

  2. 【python 10】python 魔术方法

    文章目录 一.`__getitem__` 获取属性 二.`__setitem__` 设置属性 三.`__delitem__` 删除属性 四.`__len__` 求长度 五.`__call__` 将类变 ...

  3. 计算机视觉-自定义对象检测器

    1.模板匹配 运行指令:python template_matching.py --source 3.jpg --template 2.jpg import argparse import cv2ap ...

  4. torch中Dataset的构造与解读

    torch中Dataset的构造与解读 Dataset的构造 要自定义自己的数据集,首先需要继承Dataset(torch.utils.data.Dataset)类. 继承Dataset类之后,必须重 ...

  5. 动手学深度学习第一次打卡

    今年才开始接触深度学习,基本上是小白的状态,希望能利用疫情放假的这些日子好好学习一下深度学习.第一次打卡包括Task01和Task02两部分,Task01的学习任务又分为线性回归.Softmax与分类 ...

  6. 【Python基础】关于Python的前后、单双下划线作用

    python的各种下划线 在Python中,可能最常见的就是各种常量.变量.函数.方法前后添加的那些下划线了.有前面加的.后面加的,加一个的,加两个的,看到头晕.那么,你对这些知识都掌握了吗 ?让我们 ...

  7. pytorch中的collate_fn 是什么作用

    对于目标检测或者目标分类来说,都会在dataloader加载数据时定义一个自己的collate_fn,那collate_fn的作用到底是什么作用那?(主要参考这里) 当我们在自定义自己的dataset ...

  8. 关于Python的前后、单双下划线作用,看完这篇文章,吊打面试官!

    Python实战社群 Java实战社群 长按识别下方二维码,按需求添加 扫码关注添加客服 进Python社群▲ 扫码关注添加客服 进Java社群▲ 作者丨王翔丨 来源丨清风Python(ID:Bree ...

  9. 大学计算机python编程的函数及作用总结_【转】python 内置函数总结(大部分)...

    python 内置函数大讲堂 python全栈开发,内置函数 1.内置函数 python的内置函数截止到python版本3.6.2,现在python一共为我们提供了68个内置函数.它们就是python ...

最新文章

  1. nodejs在cmd中运行js_如何在nodejs里调用执行系统命令
  2. linux mysql 统一字符编码
  3. PowerDesigner使用教程 —— 概念数据模型详解
  4. NoSQL开篇——为什么要使用NoSQL
  5. 翻车实录之Nature Medicine新冠单细胞文献|附全代码
  6. erp系统是什么版本
  7. QQ浏览器下拉词推广是什么?
  8. pmbok第六版_英文版(带目录).pdf_书籍分享 | 高等数学(第六版)含解析~同济大学...
  9. Jvisualvm监控远程SpringBoot项目
  10. 省份简称匹配并分组统计
  11. 5G网络规划解决方案
  12. 应届生求职应聘简历PPT模板
  13. 替换字符串中的通配符
  14. Hbase——练习3
  15. 家用计算机硬盘一般价格,家用电脑使用企业级硬盘的效果会很好吗?
  16. 织梦 PHP 字段 调用,织梦怎么调用自定义字段
  17. 21精美ContactPages联系我们页面设计欣赏
  18. 485总线最大能挂载多少个节点
  19. python 求解包含两个未知数的方程
  20. 如何形象理解多方安全计算、去中心化?

热门文章

  1. Python中用dict统计列表中元素出现的次数
  2. Python列表的常用方法
  3. Python 字符串格式化输出方式
  4. python中的简单while循环及逻辑运算符
  5. 用Python学分析 - 单因素方差分析
  6. ecshop 后台添加评论_如何提升外卖营业额?评论回复不可忽视
  7. VS远程调试(Visual Studio)远程连接到linux cmake(跨平台开发)(适用于VS2019,且远程目标平台cmake版本大于等于3.8)
  8. OpenCV:在imshow() 之前使用namedWindow() 的必要性讨论?
  9. C语言怎么开辟超大内存?(malloc)
  10. Coprime Sequence 思维 gcd 删一个数