您的位置:首页 > 编程语言 > Python开发

python Class:面向对象高级编程 __getitem__

2018-07-20 11:14 821 查看
官网解释:

object.
__getitem__
(self, key)

Called to implement evaluation of
self[key]
. For sequence types, the accepted keys should be integers and slice objects. Note that the special interpretation of negative indexes (if the class wishes to emulate a sequence type) is up to the
__getitem__()
method. If key is of an inappropriate type,
TypeError
may be raised; if of a value outside the set of indexes for the sequence (after any special interpretation of negative values),
IndexError
should be raised. For mapping types, if key is missing (not in the container),
KeyError
should be raised.Note:
for
loops expect that an
IndexError
will be raised for illegal indexes to allow proper detection of the end of the sequence.

对于Fibonacci数列,当我们想抽取特定位置的值看,那又该怎么做,于是就出来了__getitem__这样的函数。

int、list类型:切片(没有step)

#!/usr/bin/python
# -*- coding: utf-8 -*-

class Fib(object):
def __getitem__(self, n):
if isinstance(n, int): # n是索引
a, b = 1, 1
for x in range(n):
a, b = b, a + b
return a
if isinstance(n, slice): # n是切片
start = n.start
stop = n.stop
if start is None:
start = 0
a, b = 1, 1
L = []
for x in range(stop):
if x >= start:
L.append(a)
a, b = b, a + b
return L

f = Fib()
print f[0:4]



print f[9]

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息