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

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

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

__call__

在Python中,函數(shù)其實是一個對象:

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

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

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

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

我們把 Person 類變成一個可調(diào)用對象:

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)在可以對 Person 實例直接調(diào)用:

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

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

任務(wù)

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

class Fib(object):
  ???

請加一個__call__方法,讓調(diào)用更簡單:

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

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

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)

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

相關(guān)文章

  • pytorch fine-tune 預(yù)訓(xùn)練的模型操作

    pytorch fine-tune 預(yù)訓(xùn)練的模型操作

    這篇文章主要介紹了pytorch fine-tune 預(yù)訓(xùn)練的模型操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • python利用拉鏈法實現(xiàn)字典方法示例

    python利用拉鏈法實現(xiàn)字典方法示例

    這篇文章主要介紹了python利用拉鏈法實現(xiàn)字典的方法,文中給出了詳細(xì)的示例代碼,相信對大家具有一定的參考價值,需要的朋友可以們下面來一起看看吧。
    2017-03-03
  • Python字典操作詳細(xì)介紹及字典內(nèi)建方法分享

    Python字典操作詳細(xì)介紹及字典內(nèi)建方法分享

    這篇文章主要介紹了Python字典操作詳細(xì)介紹及字典內(nèi)建方法分享,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01
  • 基于python3 類的屬性、方法、封裝、繼承實例講解

    基于python3 類的屬性、方法、封裝、繼承實例講解

    下面小編就為大家?guī)硪黄趐ython3 類的屬性、方法、封裝、繼承實例講解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • 使用Python編寫一個Lisp語言的解釋器

    使用Python編寫一個Lisp語言的解釋器

    這篇文章主要為大家詳細(xì)介紹了如何使用Python編寫一個簡單的Lisp語言的解釋器,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-11-11
  • PyQt5實現(xiàn)界面(頁面)跳轉(zhuǎn)的示例代碼

    PyQt5實現(xiàn)界面(頁面)跳轉(zhuǎn)的示例代碼

    這篇文章主要介紹了PyQt5實現(xiàn)界面跳轉(zhuǎn)的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • Python調(diào)用百度AI實現(xiàn)人像分割詳解

    Python調(diào)用百度AI實現(xiàn)人像分割詳解

    本文主要介紹了如何通過Python調(diào)用百度AI從而實現(xiàn)人像的分割與合成,文中的示例代碼對我們的工作或?qū)W習(xí)有一定的幫助,需要的朋友可以參考一下
    2021-12-12
  • 教你用python3根據(jù)關(guān)鍵詞爬取百度百科的內(nèi)容

    教你用python3根據(jù)關(guān)鍵詞爬取百度百科的內(nèi)容

    這篇文章介紹的是利用python3根據(jù)關(guān)鍵詞爬取百度百科的內(nèi)容,注意本文用的是python3版本以及根據(jù)關(guān)鍵詞爬取,爬取也只是單純的爬網(wǎng)頁信息,有需要的可以參考借鑒。
    2016-08-08
  • Python 如何解決稀疏矩陣運算

    Python 如何解決稀疏矩陣運算

    這篇文章主要介紹了Python 解決稀疏矩陣運算的操作,具有很好的參考價值,希望對大家有所幫助。
    2021-05-05
  • Python?NLP開發(fā)之實現(xiàn)聊天機(jī)器人

    Python?NLP開發(fā)之實現(xiàn)聊天機(jī)器人

    這篇文章主要為大家介紹了Python如何實現(xiàn)聊天機(jī)器人,即使用自然語言處理?(NLP)?來幫助用戶通過文本、圖形或語音與?Web?服務(wù)或應(yīng)用進(jìn)行交互,感興趣的可以了解一下
    2023-05-05

最新評論