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) 函数,让它返回一个还可以切片,迭代的对象,比原来单纯返回切片对象高级
网友评论