魔法属性__getslice__、__setslice__、__delslice__:让类的实例对象像列表一样具有切片功能

魔法属性(只限python2.x版本,python3.x无此功能):
  __getslice__、__setslice__、__delslice__:分别用于分片操作,如列表的切片

案例:

# coding=utf-8
class Foo(object):
    save_list = [1, 2, 3, 4, 5, 6, 34, 23, 5]

    def __getslice__(self, i, j):
        print "__getslice__:"
        return self.save_list[i: j]

    def __setslice__(self, i, j, sequence):
        print "__setslice__:"
        self.save_list[i:j] = sequence
        print self.save_list

    def __delslice__(self, i, j):
        print "__delslice__:"
        del self.save_list[i: j]
        print self.save_list


obj = Foo()
result = obj[1: 2]
print(result)
obj[0: 1] = [23, 22, 15, 4]
del obj[4:]

"""
结果:
__getslice__:
[2]
__setslice__:
[23, 22, 15, 4, 2, 3, 4, 5, 6, 34, 23, 5]
__delslice__:
[23, 22, 15, 4]
"""

猜你喜欢

转载自blog.csdn.net/weixin_40576010/article/details/88549890