美文网首页
5-4 实现可以切片的对象

5-4 实现可以切片的对象

作者: 正在努力ing | 来源:发表于2018-08-26 15:50 被阅读0次
import numbers


class Group:
    def __init__(self,company,statff):
        self.company = company
        self.statff = statff
    
    def __getitem__(self, item):
        cls = type(self)

        if isinstance(item, slice):
            return cls(company=self.company,statff=self.statff[item])
        elif isinstance(item, numbers.Integral):
            return cls(company=self.company,statff=[self.statff[item]])
        
        #原来就是单纯返回切片的对象
        #return self.statff[item]

    def __len__(self):
        return len(self.statff)

    def __iter__(self):
        return iter(self.statff)

statfflist = ["zhou","huge","bajia","shijie"]
group = Group(company="BAT",statff=statfflist)
print(group[2].statff)

list = group[:3]
#此时的list任然是一个Group的实例,是一个切片后还可以切片和迭代的对象
print(list.statff[0:2])

for li in list:
    print(li)
['bajia']
['zhou', 'huge']
zhou
huge
bajia

自己去实现 def getitem(self, item) 函数,让它返回一个还可以切片,迭代的对象,比原来单纯返回切片对象高级

相关文章

网友评论

      本文标题:5-4 实现可以切片的对象

      本文链接:https://www.haomeiwen.com/subject/fiyoiftx.html