博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
class2,迭代
阅读量:4221 次
发布时间:2019-05-26

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

super

内置方法:__len__(self), __getitem(self, key) ,  __setitem__(self, key,value), __delitem__(self, key)

property: 4个参数分别是fget, fset, fdel doc

class rect:    def __init__(self):        self.width = 0        self.height = 0    def setsize(self, size):        self.width, self.height = size    def getsize(self):        return self.width, self.height    size = property(getsize, setsize)
>>> r=rect()>>> r.width = 10>>> r.height = 5>>> r.size(10, 5)>>> r.size = 150, 100>>> r.width150
__getattribute__(self.name)

__getattr__(self.name)

__setattr__(self.name, value)

__delattr__(self,name)

使用self.__dict__[name]避免死循环。

迭代器:对象有__iter__可以迭代,next实现迭代: 放在for 循环使用,能返回所需的迭代器

class Fibs:    def __init__(self):        self.a = 0        self.b = 1    def __next__(self):        self.a, self.b = self.b, self.a + self.b        return self.a    def __iter__(self):        return self
>>> fibs =Fibs()>>> for f in fibs:	if f > 1000:		print(f)		break	1597
把实现去掉:

class Fibs:    def __init__(self):        self.a = 0        self.b = 1    def __next__(self):        #self.a, self.b = self.b, self.a + self.b        #return self.a        pass    def __iter__(self):        return self
>>> fibs =Fibs()>>> i =1>>> for f in fibs:	if i < 10:		print(f)		i+=1	else:		print('finish')		break	NoneNoneNoneNoneNoneNoneNoneNoneNonefinish
内建函数 __next__:

>>> it = iter([1,2,3])>>> it.__next__()1>>> it.__next__()2>>> it.__next__()3>>> it.__next__()Traceback (most recent call last):  File "
", line 1, in
it.__next__()StopIteration
还有:

class titer:    value = 0    def __next__(self):        self.value += 1        if self.value > 10: raise StopIteration        return self.value    def __iter__(self):        return self
>>> ti =titer()>>> list(ti)[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
本质上是给个地址入口,不断滚值!

转载地址:http://sqmmi.baihongyu.com/

你可能感兴趣的文章
重学多线程(四)—— 线程池
查看>>
重学Java集合类(一)—— 集合类简介
查看>>
重学多线程(五)—— Unsafe类
查看>>
重学Java集合类(二)—— List接口
查看>>
重学Java集合类(三)—— Map接口(上)
查看>>
重学Java集合类(三)—— Map接口(下)
查看>>
重学Java集合类(四)—— Set接口
查看>>
重学Java集合类(五)—— 集合类的遍历
查看>>
重学Java虚拟机(一)—— JVM内存模型
查看>>
重学Java虚拟机(二)—— JVM内存管理
查看>>
重学Java虚拟机(三)—— Java类文件结构
查看>>
重学Java虚拟机(四)—— 类加载机制
查看>>
重学Java集合类(六)—— 红黑树和TreeMap
查看>>
Java的四种引用方式
查看>>
重学Java集合类(七)—— ConcurrentHashMap
查看>>
重学多线程(六)—— 原子操作类
查看>>
Java内部类学习
查看>>
Netty框架学习之路(一)—— Java网络IO模型
查看>>
如何编写一份优雅的Spring配置文件
查看>>
重学设计模式(一)—— 简单工厂、工厂方法、抽象工厂
查看>>