读源码的时候看到了一些不太熟悉的方法,网上了解的时候有的看起来说清楚了,有的纯粹恶心人,自己写了两个例子再对照着看了一下,记录一下
以前学的是java,在java里面所有的对象都是默认继承自object类的,所以默认可以使用和重写一些父类方法,这些方法的作用不是调用,而是在特定情况下显现,比如print的时候
在python里面也有类似的方法,__getitem__就是这一类

import numpy as np
class temp:def __init__(self, i):self.id = np.arange(i)def __getitem__(self, index):i = self.id[index]return idef greeting(self):print("Hello", self.id)

这里greeting就是一个调用的方法,也是初学的时候最常用的写法
然后__getitem__则是在迭代的时候才会发挥作用

t = temp(9)
t
output:<__main\__.temp at 0x1938accef70>

这里直接放上t返回的是新建的这个对象的地址

for i in t:print(i)
output:0 1 2 3 4 5 6 7 8

对对象t进行迭代的时候调用了__getitem__
如果删掉该方法则会报错:

'temp' object is not iterable

判断后发现,在加上__getitem__方法后,相当于将类变成了一个iterable类,即类似于数组,可以取其中某一项可以用循环迭代的类,具体如何取,则是调用__getitem__方法来判断
如果没有写return,也可以迭代但是会默认返回None
迭代的次数也是__getitem__来决定,如果在方法体里以数组的方法获取值,那么无法获取值的时候就会停止,但是如果写成print(“Hello”),就会无限循环

展示几个错误示范

class temp:def __init__(self, i):self.id = np.arange(i)def __getitem__(self, index):i = self.id[index]def __len__(self):return self.id

使用这个类进行迭代会返回i个None

class temp3:def __init__(self, i):self.id = np.arange(i)def __getitem__(self, index):print("Hello")def __len__(self):return self.id

使用这个会无限打印Hello

python基础 __getitem__相关推荐

  1. 刻意练习:Python基础 -- Task11. 魔法方法

    背景 我们准备利用17天时间,将 "Python基础的刻意练习" 分为如下任务: Task01:变量.运算符与数据类型(1day) Task02:条件与循环(1day) Task0 ...

  2. Python之路【第二篇】:Python基础(一)

    Python之路[第二篇]:Python基础(一) 入门知识拾遗 一.作用域 对于变量的作用域,执行声明并在内存中存在,该变量就可以在下面的代码中使用. 1 2 3 if 1==1:     name ...

  3. Python基础入门笔记(二)

    前言 本文主要为 Python基础入门笔记(一)内容的补充. 一.迭代器和生成器 1.1 Python迭代器 迭代器是一个可以记住遍历的位置的对象. 迭代器对象从集合的第一个元素开始访问,直到所有的元 ...

  4. python包括哪些部分_第一部分 Python基础篇

    第⼀一部分 Python基础篇 1. 为什什么学习Python? 朋友推荐,比较简单易学,生态圈比较强大 发展趋势:人工智能.数据分析 2. 通过什什么途径学习的Python? 廖雪峰.网络博客.相关 ...

  5. Python基础总结之常用内置方法总结

    文章目录 前言 1.str 1.1.内置方法: 1.2.常用的内置方法 1.3.String模块的一些方法 2.list 2.1.内置方法 2.2.常用内置方法 3.tupple 3.1.内置方法 3 ...

  6. Python基础(八)--迭代,生成器,装饰器与元类

    目录 Python基础(八)--迭代,生成器,装饰器与元类 1 迭代 1.1 可迭代对象与迭代器 1.2 自定义迭代类型 1.3 迭代合体 2 生成器 2.1 什么是生成器 2.2 生成器表达式 2. ...

  7. python代码大全和用法用量_python零基础入门命令方式汇总大全,快速恶补你的Python基础...

    原标题:python零基础入门命令方式汇总大全,快速恶补你的Python基础 无意中浏览到这篇来自大牛的分享,总结的很全面,我重新排版下放在这里,希望能帮助到大家.在此十分感谢原作者! 在开始之前还是 ...

  8. Python基础-高级变量类型

    Python基础-高级变量类型 1.高级变量类型 """ 数值型:int float bool compex 非数值型:str list set dict tuple & ...

  9. Python基础-循环

    Python基础-循环 1.while 循环 #str = '媳妇儿,我错了'# 1.定义循环变量初始值 # index = 0 # # 2.循环 # while index<10000: # ...

最新文章

  1. 我们已经不用AOP做操作日志了!
  2. #pragma once 是什么意思?
  3. linux 修改时区_如何在 Ubuntu 20.04 上设置或者修改时区
  4. userAgent,JS用户代理检测——判断浏览器内核、浏览器、浏览器平台、windows操作系统版本、移动设备、游戏系统
  5. [ARM-assembly]-ARM交叉编译器下编译的各个镜像的反汇编文件分析
  6. 【数据结构与算法】之深入解析“随机翻转矩阵”的求解思路与算法示例
  7. 2021博客之星,请帮忙投上宝贵一票
  8. 详解ScheduledExecutorService的周期性执行方法
  9. halcon gen_region_hline 绘制霍夫变换提取直线
  10. client中周期性边界_「微评」增加艺术品在投资组合中的比例 推进国家艺术软实力...
  11. zsh of kali
  12. 58同城 | Embedding技术在房产推荐中的应用
  13. Linux使用Wget实现整站下载
  14. win10安装无法创建新分区也找不到现有分区问题
  15. 东方财富股吧评论爬虫和情绪分析
  16. 软考中项第三章 信息系统集成专业知识
  17. go build在mac系统下生成可执行文件时隐藏终端
  18. [backtrack教程]从零开始,教你如何破解WEP、WPA无线网络
  19. 网易云项目(Vue)
  20. Alist常用样式代码

热门文章

  1. 微信web开发工具使用详解笔记
  2. manjaro独显无法调节亮度(N卡)
  3. matlab计算经纬度两点之间距离,根据经纬度,计算两点之间的距离
  4. 微信小程序 隐藏页面导航栏左上角的小房子
  5. 3~4万能买什么样的经济型车?
  6. 计算机毕业设计Java校园流浪猫图鉴管理系统的设计与实现(源码+系统+mysql数据库+Lw文档)
  7. 什么是kernel_task,为什么在Mac上运行?
  8. 使用scrapy第一次成功爬出信息,目标是流放之路论坛
  9. 孪生素数100java_java实现孪生素数
  10. 基于单片机的盲人专用综合型智能水杯