python进阶五(定制类)【5-3python中__len__】

python中 __len__

如果一个类表现得像一个list,要获取有多少个元素,就得用 len() 函数

要让 len() 函数工作正常,类必须提供一个特殊方法__len__(),它返回元素的个数。

例如,我们写一个 Students 类,把名字传进去:

1 class Students(object):
2     def __init__(self, *args):
3         self.names = args
4     def __len__(self):
5         return len(self.names)

只要正确实现了__len__()方法,就可以用len()函数返回Students实例的“长度”:

>>> ss = Students('Bob', 'Alice', 'Tim')
>>> print len(ss)
3

任务

斐波那契数列是由 0, 1, 1, 2, 3, 5, 8...构成。

请编写一个Fib类,Fib(10)表示数列的前10个元素,print Fib(10) 可以打印出数列的前 10 个元素,len(Fib(10))可以正确返回数列的个数10。

 1 class Fib(object):
 2 
 3     def __init__(self, num):
 4         a,b,L = 0,1,[]
 5         for n in range(num):
 6             L.append(a)
 7             a,b = b,a+b
 8         self.num = L
 9 
10     def __str__(self):
11         return str(self.num)
12     __repr__ = __str__
13     
14     def __len__(self):
15         return len(self.num)
16 
17 f = Fib(10)
18 print f
19 print len(f)

猜你喜欢

转载自www.cnblogs.com/ucasljq/p/11625437.html