python 使用__neg__和__iter__

__neg__

  python中 __neg__ 方法对应于 符号 -

  可见 str 没有__neg__,定义 strnew

  好吧,无法再简化了

__iter__

  看看 list 的 __iter__:

  list_iterator 也是有 __iter__ 的,它返回自己。

  python2 迭代调用 next;python3 迭代调用 __next__。

  __next__ 结束时 raise StopIteration 告诉for循环已经结束。

时间: 2024-10-12 08:12:56

python 使用__neg__和__iter__的相关文章

迭代器就是重复地做一些事情,可以简单的理解为循环,在python中实现了__iter__方法的对象是可迭代的,实现了next()方法的对象是迭代器,这样说起来有

迭代器就是重复地做一些事情,可以简单的理解为循环,在python中实现了__iter__方法的对象是可迭代的,实现了next()方法的对象是迭代器,这样说起来有点拗口,实际上要想让一个迭代器工作,至少要实现__iter__方法和next方法.很多时候使用迭代器完成的工作使用列表也可以完成,但是如果有很多值列表就会占用太多的内存,而且使用迭代器也让我们的程序更加通用.优雅.pythonic.下边是一个例子,从里边你会感受到不用列表而用迭代器的原因. #!/usr/bin/env python #c

Python 迭代器 & __iter__方法

转载自 http://blog.csdn.net/bluebird_237/article/details/38894617 迭代器就是重复地做一些事情,可以简单的理解为循环,在python中实现了__iter__方法的对象是可迭代的,实现了next()方法的对象是迭代器,这样说起来有点拗口,实际上要想让一个迭代器工作,至少要实现__iter__方法和next方法.很多时候使用迭代器完成的工作使用列表也可以完成,但是如果有很多值列表就会占用太多的内存,而且使用迭代器也让我们的程序更加通用.优雅.

python Class: 面向对象高级编程 __iter__ 和 next()

官网解释: New in version 2.2. iterator.__iter__() Return the iterator object itself. This is required to allow both containers and iterators to be used with the for and instatements. This method corresponds to the tp_iter slot of the type structure for P

python基础知识——基本的数据类型2——列表,元组,字典,集合

磨人的小妖精们啊!终于可以归置下自己的大脑啦,在这里我要把--整型,长整型,浮点型,字符串,列表,元组,字典,集合,这几个知识点特别多的东西,统一的捯饬捯饬,不然一直脑袋里面乱乱的. 一.列表 1.列表的全部方法 如:['1','2'].['wupeiqi', 'alex'] 1 >>> dir(list) 2 ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__delslice__', '_

第五节课:Python列表的应用

一.内置list方法 a = 'asdsf' list(a) 返回一个列表, 参数是可选迭代对象. 里面输出的内容还是保持了传入可迭代对象的元素和顺序. 如果参数为空,则返回一个空的列表. 二.xrange和range的区别 2.1 迭代的意思:重复很多次做一些事情. 在Python中实现了__iter__方法的对象是可迭代的, 比如list,tuple,dict 2.2 xrange的用法 xrange(开始,结束,步长) xrange生成一个xrange对象, 生成器的概念. >>>

(23)迭代器、生成器

*可迭代对象list,tuple,dict,str,generator(生成器) *迭代器迭代器肯定是iterable类型的对象,它是包含有next(Python 2) 方法或者__next__(Python 3) 方法和__iter__(返回self)方法的一个特殊对象,可以对这样一个对象进行for loop循环访问.对于实现next方法需要注意的是,当没有下一个元素的时候必须抛出StopIteration异常.当遍历一个迭代器的时候,它会修改内部状态,导致你只能向前获取下一个元素,不能通过迭

开发技术--面向对象

开发|面向对象 面向对象的学习,可以让我们的代码趋于模块化,规范化,尤其是引入设计模式之后,面向对象的优点就更加明显~~ 希望大家在实际使用中多使用面向对象的思想,enjoy! 前言 目前所有的文章思想格式都是:知识+情感. 知识:对于所有的知识点的描述.力求不含任何的自我感情色彩. 情感:用我自己的方式,解读知识点.力求通俗易懂,完美透析知识. 正文 我给本篇文章的定位是回顾自己之前学过的知识点,一定会有我没有涉及到的知识点.我会将我自己学习面向对象之后使用过的,忘记了的,我觉得自己需要掌握的

流畅python学习笔记:第十三章:重载运算符__add__,__iadd__,__radd__,__mul__,__rmul__,__neg__,__eq__,__invert__,__pos__

在前面第十章以及第一章的时候介绍了Vector对象的运算符重载.第十三章专门介绍运算符重载.这里我们看几个之前没讲过的运算符__neg__,__pos__,__invert__ class Vector(object):     def __init__(self,x):         self.x=x     def __neg__(self):         return "Vector(%d)" % (-self.x)     def __str__(self):      

python迭代器:iter()和__iter__()

概述 迭代器更大的功劳是提供了一个统一的访问集合的接口.迭代器为类序列对象提供了一个类序列的接口.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退.python的迭代无缝地支持序列对象,而且它还允许程序员迭代非序列类型,包括用户定义的对象.迭代器用起来很灵巧,你可以迭代不是序列但表现出序列行为的对象,例如字典的键.一个文件的行,等等. 从根本上说,迭代器就是有一个next()方法的对象,而不是通过索引来计数. 迭代器的作用如下: 提供了可扩展的迭代器接口: