面向对象-内置特殊方法-切片。切片方法的实现和索引类似,也要实现三个内置方法:__setitem__;__getitem__;__delitem__。
print('#' * 50)
# 切片方法的实现和索引类似,也要实现三个内置方法:__setitem__;__getitem__;__delitem__
class Cat:
def __init__(self, its):
# self.its = [1, 2, 3, 4, 5, 6] # 注意切片只能修改不能新增,所以列表中首先要有元素,并且符合切片大小
self.its = its
def __setitem__(self, key, value):
# print(key, value)
# print(key.start)
# print(key.stop)
# print(key.step)
if isinstance(key, slice):
self.its[key.start: key.stop: key.step] = value
def __getitem__(self, item):
return self.its[item]
def __delitem__(self, key):
del self.its[key]
list1 = [1, 2, 3, 4, 5, 6]
c = Cat(list1)
c[1:4:2] = ['a', 'b'] # 设置一组数据,返回slice(1, 4, 2)对象
print(c.its)
# slice(1, 4, 2) ['a', 'b']
'''slice类中有下面三个属性,看文档,可以通过这三个属性来查看开始,结束和步长
start = property(lambda self: 0)
""":type: int"""
step = property(lambda self: 0)
""":type: int"""
stop = property(lambda self: 0)
""":type: int"""
'''
# 获取切片对象
print(c[1:4:2])
# 删除对应切片元素
del c[1:4]
print(c.its)