call在Python中改进数列的实例讲解_第1页
call在Python中改进数列的实例讲解_第2页
call在Python中改进数列的实例讲解_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第call在Python中改进数列的实例讲解我们都有过函数调用的经历,那么call调用类实例的过程就跟函数很相似。类的用法很多人都知道了,类实例又是什么呢?可以把类看成一个设计图,类实例就是设计出的成品。现在我们弄清楚了call调用对象的概念,就可以进一步用来在python中改进数组,想学的小伙伴一起往下看吧。

__call__()

Python里,函数式first-class对象,这表示,函数可以被传递给另外的函数或者方法,可以从子程序里返回,可以赋给变量。

类的实例也可以像函数一样被对待,比如将他们传递给其他的函数或者方法,并且被调用。想要达到这个目的,就要在类里专门定义__call__()方法。

def__call__(self,[args...])它接受一系列参数。假设x是类X的一个实例,x.__call__(1,2)就等价于调用x(1,2),而实例x仿佛就是一个函数。

改进一下斐波那契数列:

classFib(object):

请加一个__call__方法,让调用更简单:

f=Fib()

print(f(10))

[0,1,1,2,3,5,8,13,21,34]

可以把实例对象用类似函数的形式表示,进一步模糊了函数和对象之间的概念。

classFib(object):

def__init__(self):

pass

def__call__(self,num):

a,b=0,1;

self.l=[]

foriinrange(num):

self.l.append(a)

a,b=b,a+b

returnself.l

def__str__(self):

returnstr(self.l)

__rept__=__str__

f=Fib()

print(f(10))

__call__()知识点扩展

在Python中,函数其实是一个对象:

f=abs

f.__name__

abs

f(-123)

由于f可以被调用,所以,f被称为可调用对象。

所有的函数都是可调用对象。

一个类实例也可以变成一个可调用对象,只需要实现一个特殊方法__call__()。

我们把Person类变成一个可调用对象:

classPerson(object):

def__init__(self,name,gender):

=name

self.gender=gender

def__call__(self,friend):

printMynameis%s...%

printMyfriendis%s...%friend

现在可以对Person实例直接调用:

p=Person(Bob,male)

p(Tim)

MynameisBob...

MyfriendisTim...

单看p(Tim)你无法确定p是一个函数还是一个类

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论