新聞中心
我們都有過函數(shù)調(diào)用的經(jīng)歷,那么call調(diào)用類實例的過程就跟函數(shù)很相似。類的用法很多人都知道了,類實例又是什么呢?可以把類看成一個設(shè)計圖,類實例就是設(shè)計出的成品?,F(xiàn)在我們弄清楚了call調(diào)用對象的概念,就可以進一步用來在python中改進數(shù)組,想學(xué)的小伙伴一起往下看吧。

10年的普蘭網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。營銷型網(wǎng)站建設(shè)的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整普蘭建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)從事“普蘭網(wǎng)站設(shè)計”,“普蘭網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。
__call__()
-
Python里,函數(shù)式first-class對象,這表示,函數(shù)可以被傳遞給另外的函數(shù)或者方法,可以從子程序里返回,可以賦給變量。
-
類的實例也可以像函數(shù)一樣被對待,比如將他們傳遞給其他的函數(shù)或者方法,并且被調(diào)用。想要達到這個目的,就要在類里專門定義__call__()方法。
-
def __call__(self, [args ...]) 它接受一系列參數(shù)。假設(shè)x是類X的一個實例 , x.__call__(1, 2) 就等價于調(diào)用x(1,2),而實例x仿佛就是一個函數(shù)。
改進一下斐波那契數(shù)列:
class Fib(object): ???
請加一個__call__方法,讓調(diào)用更簡單:
>>> f = Fib() >>> print(f(10)) [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
可以把實例對象用類似函數(shù)的形式表示,進一步模糊了函數(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))
本篇結(jié)合斐波那契數(shù)列使用call改進的方法到這里就結(jié)束了。對于斐波那契數(shù)列有所遺忘的可以在往期文章中查看,然后返回來使用call的方法改進。
網(wǎng)頁名稱:創(chuàng)新互聯(lián)Python教程:如何用call在Python中改進數(shù)列?
當(dāng)前網(wǎng)址:http://m.5511xx.com/article/cogdsoe.html


咨詢
建站咨詢
