|
发表于 2020-4-17 11:09:29
|
显示全部楼层
- class reversed:
- def __new__(cls,sequence,/):
- if hasattr(sequence,'__reversed__'):
- return sequence.__reversed__()
-
- return object.__new__(cls)
- def __init__(self,sequence,/):
- if hasattr(sequence,'__getitem__'):
- self.__idx=len(sequence)
- else:
- raise TypeError(f"'{sequence.__class__.__name__}' object is not reversible")
- self.__seq=sequence
- def __iter__(self):
- return self
- def __length_hint__(self):
- return self.__idx+1
-
- def __reduce__(self):
- return self.__class__,(self.__seq,),self.__idx
- def __next__(self):
- if self.__idx:
- self.__idx-=1
- return self.__seq[self.__idx]
-
- else:
- raise StopIteration
- def __setstate__(self,value):
- if isinstance(value,int):
- self.__index=min(value,self.__index)
-
- else:
- raise TypeError("an integer is required")
复制代码 满意请选最佳~ |
|