1、__iter__
如果一个类想被用于for ... in循环,类似list或tuple那样,就必须实现一个__iter__()方法,该方法返回一个迭代对象,然后,Python的for循环就会不断调用该迭代对象的__next__()方法拿到循环的下一个值,直到遇到StopIteration错误时退出循环。
class Fid:
def __init__(self):
self._a, self._b =0, 1
def __iter__(self):
# 实例本身就是迭代对象,故返回自己
return self
def __next__(self):
self._a, self._b =self._b, self._a +self._b
if self._a >10000:
#退出循环
raise StopIteration
return self._a
Fid就可以使用for in 循环,
for n in Fid():
print(n)
2、__getitem__
如果一个对象希望像list一样通过下标获取元素,则需实现__getitem__()即可
class GetItem:
def __getitem__(self, item):
a, b =1, 1
for x in range(item):
a, b = b, a + b
return a
打印第二个元素
getitem = GetItem()
print(getitem[1])
网友评论