美文网首页
实现可切片的对象

实现可切片的对象

作者: 鸟它鸟 | 来源:发表于2021-02-08 11:03 被阅读0次
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)

相关文章

  • 实现可切片的对象

  • Go数组和切片区别

    数组是值传递,切片是引用传递 切片可扩容 切片多一个cap属性 切片底层用数组实现

  • Python进阶 - 高性能计算之协程

    迭代器 可迭代对象 什么是可迭代对象 可迭代对象就是对象的类中实现了__iter__方法的对象。对于可迭代对象,可...

  • 2-1迭代对象、迭代器、生成器

    可迭代对象、迭代器和生成器的关系 可迭代对象 可迭代对象实现某种接口,对与列表内部实现了__iter__()方法,...

  • Go语言实现一键多值的Map

    Go语言实现一键多值的Map 对象切片作为map的值时,删除对象后,修改原map,需要将对象赋值给原mapmyMa...

  • 2018-02-26 切片操作和生成器

    切片操作 python的切片操作是用来访问可迭代对象的,包括字符串和数组,列表等。我们以数组为例进行介绍 可以看到...

  • Python的高级特性

    切片 list切片 tuple切片 str切片 迭代 在Python中迭代是通过for ... in ...来实现...

  • Python高级特性

    一、切片(适用list,tuple,str) 二、迭代(Iterable) Python中,只要是可迭代对象就可以...

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

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

  • python_切片

    切片 切片就是切取片段的意思吧! 切片常见对象 list tuple string 切片格式 当x、y、z当中有一...

网友评论

      本文标题:实现可切片的对象

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