python __iter__和__getitem__区别
__getitem__
单独实现这个魔法函数,可以让这个类成为一个可迭代的对象,并且可以通过使用下标获取类中元素值下标的元素
class Library(object):
def __init__(self):
self.books = [1, 2, 3]
self.index = -1 def __getitem__(self, i):
return self.books[i] # def __iter__(self):
# return self
# #
# def __next__(self):
# self.index += 1
# if self.index > len(self.books)-1:
# raise StopIteration()
# return self.books[self.index] l = Library()
print(l[1])
for i in l:
print(i)
__iter__
这个是返回一个可迭代的对象,如果一个类实现了这个魔法函数,那么这个类就是可迭代对象,并且实现了__next__这个魔法函数的话,可以通过for循环遍历;__next__如果单独实现了这一个魔法函数,只能通过next()调用
class Library(object):
def __init__(self):
self.books = [1, 2, 3]
self.index = -1 # def __getitem__(self, i):
# return self.books[i] def __iter__(self):
return self
# #
def __next__(self):
self.index += 1
if self.index > len(self.books)-1:
raise StopIteration()
return self.books[self.index] l = Library()
# print(l[1])
print(next(l))
for i in l:
print(i)
python __iter__和__getitem__区别的更多相关文章
- python @classmethod和@staticmethod区别
python 类方法和静态方法区别 python @classmethod和@staticmethod区别 Python中至少有三种比较常见的方法类型,即实例方法,类方法.静态方法.它们是如何定义的呢 ...
- 【python】classmethod & staticmethod 区别
来源:http://blog.csdn.net/carolzhang8406/article/details/6856817 其他参考: http://blog.csdn.net/lovingprin ...
- python中@classmethod @staticmethod区别
Python中3种方式定义类方法, 常规方式, @classmethod修饰方式, @staticmethod修饰方式. class A(object): def foo(self, x): prin ...
- python中@classmethod @staticmethod区别(转)
pthon中3种方式定义类方法, 常规方式, @classmethod修饰方式, @staticmethod修饰方式. class A(object): def foo(self, x): print ...
- [转]python中@classmethod @staticmethod区别
Python中3种方式定义类方法, 常规方式, @classmethod修饰方式, @staticmethod修饰方式. class A(object): def foo(self, x): prin ...
- python类和模块区别,python命名空间
在python中,类可以提供模块级别之下的命名空间. 如果一个模块写很多函数,某些函数之间共同完成一组功能,用类会看起来更清晰,在调用时候也会更好,对于ide补全有更小范围的限定提示. 类提供 继承 ...
- python的==和is区别
Python中: is判断两个标识符是否引自同一个对象 ==判断两个标识符的值是否相等 区别于java: ==判断两个标识符是否引自同一个对象 .equals()判断是否相等 #如果是String ...
- PyQt的QString和python的string的区别
转载于http://blog.chinaunix.net/uid-200142-id-4018863.html python的string和PyQt的QString的区别 python string和 ...
- js中正则表达式与Python中正则表达式的区别
今天女票让我帮她写一个js中的正则,来提取电话号码,对于正则规则来说,js与python是基本没有区别的,重点的区别是在一些函数与方法中. python中的正则提取: import re str = ...
随机推荐
- 201871010119-帖佼佼《面向对象程序设计(java)》第十一周学习总结
博文正文开头格式:(2分) 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.co ...
- Mysql Commands
start service: mysqld --console; start client: mysql -uroot -proot; check server version: show varia ...
- 聊一聊 webpack 中的 preloading 和 Prefetching
聊一聊 webpack 中的 preloading 和 Prefetching 提到 Preloading 和 Prefetching 就不得不先说一下代码分割,通过下面的例子我们来说明为什么需要代码 ...
- keras实现mnist手写数字数据集的训练
网络:两层卷积,两层全连接,一层softmax 代码: import numpy as np from keras.utils import to_categorical from keras imp ...
- 【nginx+keepalived】nginx+keepalived搭建高可用
一.结构及环境 1.1 环境介绍 操作系统:centos7 nginx+keepalived:106.53.73.200 master nginx+keepalived:182.254.184.102 ...
- CouchDB学习一
端口 端口号 协议 作用 5984 tcp 标椎集群端口用于所有的HTTP API请求 5986 tcp 用于管理员对节点与分片的管理 4369 tcp Erlang端口到daemon的映射 配置介绍 ...
- 基于vue+leaflet+echart的足迹分享评论平台
(其实题目是随便取的,目的只是用来证明Vue+leaflet+springboot技术栈的可行性) 效果 小专栏不支持上传视频?想看的话可以去我的知乎看最新的文章,那个应该可以.在这里 主要功能描述 ...
- Android: Unable to resolve dependency for ':app@debugUnitTest/compileClasspath':
我按照ExoPlayer的github指引添加 implementation 'com.google.android.exoplayer:exoplayer:2.X.X' 发现根本run不起来,并报错 ...
- mysql的MHA高可用
一.MHA简介 作者简介 松信嘉範: MySQL/Linux专家 2001年索尼公司入职 2001年开始使用oracle 2004年开始使用MySQL 2006年9月-2010年8月MySQL从事顾问 ...
- ESP8266的RTOS版本ota在线升级基本流程及备忘
ESP8266的ota升级由于涉及到不同的flash空间大小,以及新旧版本的不同,所以流程相对比较复杂.笔者这个倒腾的时间还是有一些的,不过,总归把事情解决了.下面记录一下基本的流程和遇到的问题. 还 ...