import numbers
class Group:
# 支持切片操作
def __init__(self, group_name, company_name, staffs):
self.group_name = group_name
self.company_name = company_name
self.staffs = staffs
def __reversed__(self):
"""
反转
:return:
"""
self.staffs.reverse()
def __getitem__(self, item):
"""
获得项目,实现切片的关键,返回一个列表对象
:param item:
:return:
"""
cls = type(self)
if isinstance(item, slice):
return cls(group_name=self.group_name, company_name=self.company_name, staffs=self.staffs[item])
elif isinstance(item, numbers.Integral):
return cls(group_name=self.group_name, company_name=self.company_name, staffs=[self.staffs[item]])
return self.staffs[item]
def __len__(self):
"""
长度
:return:
"""
return len(self.staffs)
def __iter__(self):
"""
项目
:return:
"""
return iter(self.staffs)
def __contains__(self, item):
"""
包含
:param item:
:return:
"""
return item in self.staffs
staffs = ['1', '2', '3', '4', '5']
group = Group(company_name='imooc', group_name='user', staffs=staffs)
sub_group1 = group[:2]
sub_group2 = group[0]
for i in group:
print(i)
reversed(group)
for i in group:
print(i)
print(group)
实现可切片的对象
最新推荐文章于 2021-09-08 20:52:49 发布