详解Python中的__getitem__方法与slice对象的切片操作

网友投稿 249 2022-09-04


详解Python中的__getitem__方法与slice对象的切片操作

1 import numbers 2 from collections import abc 3 class Group: 4 #支持切片操作 5 def __init__(self, group_name, company_name, staffs): 6 self.group_name = group_name 7 self.company_name = company_name 8 self.staffs = staffs 9 10 def __reversed__(self):11 self.staffs.reverse()12 13 def __getitem__(self, item):14 cls = type(self)15 if isinstance(item, slice):16 return cls(group_name=self.group_name, company_name=self.company_name, staffs=self.staffs[item])17 elif isinstance(item, numbers.Integral):18 return cls(group_name=self.group_name, company_name=self.company_name, staffs=[self.staffs[item]])19 20 def __len__(self):21 return len(self.staffs)22 23 def __iter__(self):24 return iter(self.staffs)25 26 def __contains__(self, item):27 if item in self.staffs:28 return True29 else:30 return False31 #如果key是一个整形的话就返回列表元素,如果是一个slice对象的话,就创建一个实例并返回。32 staffs = ["bobby1", "imooc", "bobby2", "bobby3"]33 group = Group(company_name="imooc", group_name="user", staffs=staffs)34 reversed(group)  for循环会调用__iter__方法,返回了一个迭代器

35 for user in group:36   print(user)

print(group[:2].staffs)print(group[2].staffs)会调用__getitem__方法

class _List(object): def __getitem__(self, item): print(item)I = _List()I[3] //输出:3I[1:3]//输出:slice(1, 3, None)


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:利用Java实现在PDF中添加工具提示
下一篇:Python namedtuple(python培训)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~