官方文档

如果想模拟一个容器类 具体请参考官方文档: https://docs.python.org/zh-cn/3/reference/datamodel.html#emulating-container-types 这里只介绍几个常用的XXX属性和方法

重载[ ]运算符:

getitem

可以直接通过 对象名[参数] 直接调用getitem方法

  1. class Name(object):
  2. def __getitem__(self,val):
  3. print(val)
  4. return None
  5. pass
  6. obj = Name()
  7. obj["Hibari"] # 这句语句 实际上运行的是
  8. # obj.__getitem__("Hibari")

切片类:

没错,切片是一种类!!! 类型为 平时在list列表里用切片,其实就是的对象

这种类型不能单独使用,需要配合getitem方法一起使用

  1. class Name(object):
  2. def __getitem__(self,val):
  3. print("val-Type:", type(val))
  4. print("Slice-Start:",val.start)
  5. print("Slice-Stop:", val.stop)
  6. print("Slice-Step:",val.step)
  7. return None
  8. pass
  9. obj = Name()
  10. obj[1:2:3]
  1. #运行结果
  2. #====================================
  3. Type <class 'slice'>
  4. Value slice(1, 2, 3)
  5. Slice-Start 1
  6. Slice-Stop 2
  7. Slice-Step 3