欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

__call__

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

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

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

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

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

我們把 Person 類變成一個(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') 你無法確定 p 是一個(gè)函數(shù)還是一個(gè)類實(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ì)象用類似函數(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)文章

  • Django 中的Timezone 處理操作

    Django 中的Timezone 處理操作

    這篇文章主要介紹了Django 中的Timezone 處理操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • Python 200行代碼實(shí)現(xiàn)一個(gè)滑動(dòng)驗(yàn)證碼過程詳解

    Python 200行代碼實(shí)現(xiàn)一個(gè)滑動(dòng)驗(yàn)證碼過程詳解

    這篇文章主要介紹了Python 200行代碼實(shí)現(xiàn)一個(gè)滑動(dòng)驗(yàn)證碼過程詳解,各種各樣的驗(yàn)證碼,比較高級(jí)的有滑動(dòng)、點(diǎn)選等樣式,看起來好像挺復(fù)雜的,但實(shí)際上它們的核心原理還是還是很清晰的,本文章大致說明下這些驗(yàn)證碼的原理以及帶大家實(shí)現(xiàn)一個(gè)滑動(dòng)驗(yàn)證碼
    2019-07-07
  • Python多進(jìn)程與多線程的使用場(chǎng)景詳解

    Python多進(jìn)程與多線程的使用場(chǎng)景詳解

    這篇文章主要給大家介紹了關(guān)于Python多進(jìn)程與多線程使用場(chǎng)景的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • pytorch中常用的損失函數(shù)用法說明

    pytorch中常用的損失函數(shù)用法說明

    這篇文章主要介紹了pytorch中常用的損失函數(shù)用法說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • 在漏洞利用Python代碼真的很爽

    在漏洞利用Python代碼真的很爽

    在漏洞利用Python代碼真的很爽...
    2007-08-08
  • itchat接口使用示例

    itchat接口使用示例

    這篇文章主要介紹了itchat接口使用示例,itchat接口的相關(guān)知識(shí),這里是一段代碼示例,這里分享給大家,供需要的朋友參考。努力學(xué)習(xí)中~
    2017-10-10
  • Python 如何修改程序默認(rèn)時(shí)區(qū)

    Python 如何修改程序默認(rèn)時(shí)區(qū)

    這篇文章主要介紹了Python 如何修改程序默認(rèn)時(shí)區(qū),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • Python中11種NumPy高級(jí)操作總結(jié)

    Python中11種NumPy高級(jí)操作總結(jié)

    熬夜整了了11種Numpy的高級(jí)操作,每一種都有參數(shù)解釋與小例子輔助說明。文中的示例代碼講解詳細(xì),感興趣的小伙伴快跟隨小編一起學(xué)習(xí)一下吧
    2022-05-05
  • python df遍歷的N種方式(小結(jié))

    python df遍歷的N種方式(小結(jié))

    本文主要介紹了python df遍歷的N種方式,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • Python實(shí)現(xiàn)的刪除重復(fù)文件或圖片功能示例【去重】

    Python實(shí)現(xiàn)的刪除重復(fù)文件或圖片功能示例【去重】

    這篇文章主要介紹了Python實(shí)現(xiàn)的刪除重復(fù)文件或圖片功能,結(jié)合實(shí)例形式分析了Python基于os與hashlib模塊針對(duì)文件的讀取、hash計(jì)算及重復(fù)性判定等相關(guān)操作技巧,需要的朋友可以參考下
    2019-04-04

最新評(píng)論