zoukankan      html  css  js  c++  java
  • python 实现自定义切片类

    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):
            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):
            return len(self.staffs)
    
        def __iter__(self): # 实现该魔法函数,可以使这个类成为一个可迭代的对象
            return iter(self.staffs)
    
        def __contains__(self, item):
            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)
    print(group[:2])
    reversed(group)
    for user in group:
        print(user)
  • 相关阅读:
    progresql
    postgresql
    postgresql
    postgresql 索引
    postgresql 视图
    postgresql 触发器
    postgresql异常快速定位
    postgresql数据库备份和恢复
    amgular $q用法
    安装fcitx
  • 原文地址:https://www.cnblogs.com/callyblog/p/11333194.html
Copyright © 2011-2022 走看看