2019/11/20 02-可调用对象

本文探讨Python中可调用对象的概念,详细解析__call__方法如何使类实例变成可调用对象,以及如何利用此特性进行高效计算,如斐波那契数列的快速求解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述
任何一个函数包括对象,函数可以被调用说明是一个可调用对象,代表必须有一个可调用方法
在这里插入图片描述
A()实例化初始化用的 A()()实例可以作为一个可调用对象
调用就到这个方法里去了__call__
类名()调用是初始化
如果是一个对象,要再被调用,就需要__call__这个方法

在这里插入图片描述
但是实例竟然可以当做可调用对象来看在这里插入图片描述
这样可以把一个类封装成可调用对象,也就是实例本身可以当函数用,python有很多其他独特的写法

在这里插入图片描述
对实例来讲是个可调用的
在这里插入图片描述在这里插入图片描述
把这个实例当函数用
在这里插入图片描述在这里插入图片描述
使用缓存减少计算
可调用写__call__,带入index,3,试试看算三这个值该怎么算

在这里插入图片描述
初始化就初始化,把计算的交给__call__
在这里插入图片描述在这里插入图片描述
现在如果index是3,>= len(self.items)=3
3,3+1,迭代一次
在这里插入图片描述
把=号去掉,就直接出问题了

在这里插入图片描述
现在算一个50项特别快。用了缓存记录了上次的结果,这里相当于直接用索引取的,速度够快
在这里插入图片描述
这两个看起来很相似,内部都是靠方法来实现
在这里插入图片描述
一个是把索引当列表来用fib[10]
一个是当做可调用实例来看fib(10)

在这里插入图片描述在这里插入图片描述
斐波那契除了索引,还有一个计算长度的问题,当一个可迭代对象用
在这里插入图片描述
在这里插入图片描述
现在写一个斐波那契数列,可以方便迭代,还可以方便计算
在这里插入图片描述在这里插入图片描述在这里插入图片描述
有点问题在这里插入图片描述
1这里有点问题在这里插入图片描述在这里插入图片描述在这里插入图片描述
写成这样就递归了
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值