python特殊函数__getitem__切片功能

  • ​ __getitem__函数传入参数可以是int也可以是切片对象

  • 若传入的是切片对象,则函数相应输出切片对象

  • 以费波拉契函数为例分别判断函数输入int和slice对象时的情形

    • 1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      class Fib(object):
      def __getitem__(self, n):
      if isinstance(n, int):
      a, b = 1, 1
      for x in range(n):
      a, b = b, a + b
      return a
      if isinstance(n, slice):
      start = n.start
      stop = n.stop
      a, b = 1, 1
      L = []
      for x in range(stop):
      if x >= start:
      L.append(a)
      a, b = b, a + b
      return L
    • 1
      2
      3
      >f=Fib()
      >f[0:5]
      [1,1,2,3,5]
  • 与之对应的是__setitem__()方法,把对象视作list或dict来对集合赋值。

  • __delitem__()方法,用于删除某个元素。