__repr__等内置函数==实现使用列表实现循环数据结构

来源:互联网 发布:任意号码显示软件 编辑:程序博客网 时间:2024/06/05 18:38
#coding=utf-8__author__ = 'mac'class Ring(object):    def __init__(self,l):        if not len(l):            raise "ring must have at least one element"        self._data=l    #__repr__打印,以list打印    def __repr__(self):        return repr(self._data)    def __len__(self):        return len(self._data)    def __getitem__(self, i):        return self._data[i]    def turn(self):        last=self._data.pop(-1)        self._data.insert(0,last)    def first(self):        return self._data[0]    def last(self):        return self._data[-1]l=[{1:1},{2:2},{3:3}]c=Ring(l)print cprint c.first()print c.last()c.turn()print cc.turn()print cclass Fib(object):    def __getitem__(self, n):        if isinstance(n,int):            a,b=1,1            for x in range(n):                a,b=b,a+b            return a        if isinstance(n,slice):            start=n.start            stop=n.stop            a,b=1,1            L=[]            for x in range(stop):                if x >=start:                    L.append(a)                    a,b=b,a+b            return Lf=Fib()print f[0:5]