码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2019-10-05 20:25:21      阅读:90      评论:0      收藏:0      [点我收藏+]

标签:print   turn   elf   __init__   code   必须   data   ini   ips   

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__】

标签:print   turn   elf   __init__   code   必须   data   ini   ips   

原文地址:https://www.cnblogs.com/ucasljq/p/11625437.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!