注册一亩三分地论坛,查看更多干货!
您需要 登录 才可以下载或查看附件。没有帐号?注册账号
x
- import ctypes
- class Array(object):
- """docstring for a"""
- def __init__(self, size):
- assert size > 0 and type(size) == int,'Array size must be >0 and a integer'
- self._size = size
- PyArrayType = ctypes.py_object*self._size
- self._elements = PyArrayType()
- self.clear(None)
- def __len__(self):
- return self._size
- def __getitem__(self,index):
- assert index >= 0 and index < self._size ,'Array sunscript out of range'
- return self._elements[index]
- def __setitem__(self,index,value):
- assert index >= 0 and index < self._size ,'Array sunscript out of range'
- self._elements[index] = value
- def clear(self,value):
- for i in range(self._size):
- self._elements[i] = value
- def __iter__(self):
- return _ArrayIterator(self._elements)
- class _ArrayIterator(object):
- """docstring for _ArrayIterator"""
- def __init__(self, theArray):
- self._arrayRef = theArray
- self._curNdx = 0
- def __iter__(self):
- return self
- def __next__(self):
- if self._curNdx >= 0 and self._curNdx < len(self._arrayRef):
- entry = self._arrayRef[self._curNdx]
- self._curNdx += 1
- return entry
- else:
- raise StopIteration
复制代码 当进行以下操作时:- a = Array(5)
- a.clear(5)
- for i in a:
- print i
复制代码 出现iter() returned non-iterator of type '_ArrayIterator'
的报错,请大神指点一下
|