美文网首页
Python基础24-面向对象(系统内置方法4-切片操作)

Python基础24-面向对象(系统内置方法4-切片操作)

作者: Jacob_LJ | 来源:发表于2018-05-22 22:29 被阅读21次

    Python基础-面向对象(方法)

    4 切片操作

    作用
        可以对一个实例对象进行切片操作
    步骤
        Python2.x
            1. 实现三个内置方法
                __setspice__
                    设置某个元素切片时调用
                __getspice__
                    获取某个元素切片时调用
                __delspice__
                    删除某个元素切片时调用
            2. 可以直接按照切片的方式操作对象
                p[1, 6, 2]
            注意: 过期
    
        Python3.x
            统一由"索引操作"进行管理
                def __setitem__(self, key, value):
                def __getitem__(self, item):
                def __delitem__(self, key):
    
    • 通过切片进行赋值、获取、删除操作时
    class Person:
    
        def __setitem__(self, key, value):
            print(key, value)
    
        def __getitem__(self, item):
            print(item)
    
        def __delitem__(self, key):
            print(key)
    
    
    p = Person()
    # 赋值操作
    p[1:4:2] = ["a", "b"]
    
    #获取操作
    p[1:4:2]
    
    #删除操作
    del p[1:4:2]
    
    >>> 打印结果
    
    slice(1, 4, 2) ['a', 'b']
    slice(1, 4, 2)
    slice(1, 4, 2)
    

    以上操作,key 是一个 slice 对象,其中具有 start、step、stop 三个属性


    slice - 1
    slice - 2
    • 由于索引操作和切片操作执行的三个方法是一样的,所以需要进行 key类型 值判断
      if isinstance(key, slice):
    class Person:
    
        def __init__(self):
            self.items = [1, 2, 3, 4, 5, 6, 7, 8]
    
        def __setitem__(self, key, value):
            # print(key, value)
            # print(key.start)
            # print(key.stop)
            # print(key.step)
            # print(value)
    
            if isinstance(key, slice):
                self.items[key] = value # 常用方法
                # self.items[key.start: key.stop: key.step] = value
    
        def __getitem__(self, item):
            print("getitem", item)
    
        def __delitem__(self, key):
            print("delitem", key)
    
    p = Person()
    p[0: 4: 2] = ["a", "b"]
    print(p.items)
    slice
    
    p[0: 5: 2]
    del p[0: 5: 2]
    
    >>> 打印结果
    ['a', 2, 'b', 4, 5, 6, 7, 8]
    getitem slice(0, 5, 2)
    delitem slice(0, 5, 2)
    

    相关文章

      网友评论

          本文标题:Python基础24-面向对象(系统内置方法4-切片操作)

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