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): # 魔法函数,反转,外部可以通过reversed方法对此对象进行操作
self.staffs.reverse()
def __getitem__(self, item): # 魔法函数 切片,外部可以通过切片的方法对此对象进行操作
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]])
def __len__(self): # 魔法函数 len,外部可以通过len计算此对象
return len(self.staffs)
def __iter__(self): # 让此对象 可以被迭代
return iter(self.staffs)
def __contains__(self, item): # 可以通过if in 判断对象是否包含xxx
if item in self.staffs:
return True
else:
return False
staffs = ["bobby1", "imooc", "bobby2", "bobby3"]
group = Group(company_name="imooc", group_name="user", staffs=staffs)
reversed(group)
for user in group:
print(user)
实现可切片的对象
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 2018-12-31 更新声明:切片系列文章本是分三篇写成,现已合并成一篇。合并后,修正了一些严重的错误(如自定义...
- 切片是 Python 中最迷人最强大最 Amazing 的语言特性(几乎没有之一),在《Python进阶:切片的误...
- 问题有某个人文本文件,我们想读取某范围的内容:如100-300行之间的内容,python中文本文件是一个可迭代对象...
- 5 比较操作 参考 使用装饰器, 自动生成"反向" "组合"的方法 上下文环境中的布尔值 __bool__,用于控...