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

Posted ucasljq

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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)

 

以上是关于python进阶五(定制类)5-3python中__len__的主要内容,如果未能解决你的问题,请参考以下文章

python进阶五(定制类)5-2 python中__cmp__

python进阶五(定制类)5-1 python中__str__和__repr__

python进阶-- 04 如何定制类

廖雪峰老师——Python进阶( 定制类 )

Python进阶-----通过类的内置方法__format__自定制格式化字符串

Python进阶-----通过类的内置方法__str__和__repr__自定制输出(打印)对象时的字符串信息