定制类__iter__

2020-10-27  本文已影响0人  一二三开花

如果一个类想被用于for ... in循环,类似list或tuple那样,就必须实现一个iter()方法,该方法返回一个迭代对象,然后,Python的for循环就会不断调用该迭代对象的next()方法拿到循环的下一个值,直到遇到StopIteration错误时退出循环。

一个类想实现切片方法:getitem

        if isinstance(n, slice): # n是切片

总之,通过上面的方法,我们自己定义的类表现得和Python自带的list、tuple、dict没什么区别,这完全归功于动态语言的“鸭子类型”,不需要强制继承某个接口。

上一篇下一篇

猜你喜欢

热点阅读