最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

對(duì)python特殊函數(shù) __call__()的使用詳解

 更新時(shí)間:2019年07月02日 09:12:58   作者:超級(jí)學(xué)渣渣  
今天小編就為大家分享一篇對(duì)python特殊函數(shù) __call__()的使用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

__call__

在Python中,函數(shù)其實(shí)是一個(gè)對(duì)象:

>>> f = abs
>>> f.__name__
'abs'
>>> f(-123)

由于 f 可以被調(diào)用,所以,f 被稱(chēng)為可調(diào)用對(duì)象。

所有的函數(shù)都是可調(diào)用對(duì)象。

一個(gè)類(lèi)實(shí)例也可以變成一個(gè)可調(diào)用對(duì)象,只需要實(shí)現(xiàn)一個(gè)特殊方法__call__()。

我們把 Person 類(lèi)變成一個(gè)可調(diào)用對(duì)象:

class Person(object):
  def __init__(self, name, gender):
    self.name = name
    self.gender = gender

  def __call__(self, friend):
    print 'My name is %s...' % self.name
    print 'My friend is %s...' % friend

現(xiàn)在可以對(duì) Person 實(shí)例直接調(diào)用:

>>> p = Person('Bob', 'male')
>>> p('Tim')
My name is Bob...
My friend is Tim...

單看 p('Tim') 你無(wú)法確定 p 是一個(gè)函數(shù)還是一個(gè)類(lèi)實(shí)例,所以,在Python中,函數(shù)也是對(duì)象,對(duì)象和函數(shù)的區(qū)別并不顯著。

任務(wù)

改進(jìn)一下前面定義的斐波那契數(shù)列:

class Fib(object):
  ???

請(qǐng)加一個(gè)__call__方法,讓調(diào)用更簡(jiǎn)單:

>>> f = Fib()
>>> print f(10)
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]

可以把實(shí)例對(duì)象用類(lèi)似函數(shù)的形式表示,進(jìn)一步模糊了函數(shù)和對(duì)象之間的概念

class Fib(object):
  def __init__(self):
    pass
  def __call__(self,num):
    a,b = 0,1;
    self.l=[]
    
    for i in range (num):
      self.l.append(a)
      a,b= b,a+b
    return self.l
  def __str__(self):
    return str(self.l)
  __rept__=__str__
      
f = Fib()
print f(10)

以上這篇對(duì)python特殊函數(shù) __call__()的使用詳解就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

邯郸县| 闻喜县| 叶城县| 永川市| 沙雅县| 桐庐县| 隆安县| 八宿县| 牟定县| 玛沁县| 华阴市| 苏尼特左旗| 绍兴市| 阆中市| 大渡口区| 舒城县| 泰和县| 恩平市| 文水县| 米泉市| 慈利县| 闵行区| 黄龙县| 大兴区| 遂宁市| 尚志市| 双辽市| 凤阳县| 卓尼县| 潍坊市| 曲阳县| 松滋市| 外汇| 祁阳县| 清徐县| 黔江区| 平果县| 迁安市| 堆龙德庆县| 和林格尔县| 苏尼特左旗|