欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

帶你了解python鴨子類型的相關(guān)原理-創(chuàng)新互聯(lián)

本篇文章為大家展示了帶你了解python鴨子類型的相關(guān)原理,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

專注于為中小企業(yè)提供成都網(wǎng)站制作、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)阿爾山免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了成百上千家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

首先Python不支持多態(tài),也不用支持多態(tài),python是一種多態(tài)語(yǔ)言,崇尚鴨子類型。

在程序設(shè)計(jì)中,鴨子類型(英語(yǔ):duck typing)是動(dòng)態(tài)類型的一種風(fēng)格。在這種風(fēng)格中,一個(gè)對(duì)象有效的語(yǔ)義,不是由繼承自特定的類或?qū)崿F(xiàn)特定的接口,而是由當(dāng)前方法和屬性的集合決定。這個(gè)概念的名字來源于由James Whitcomb Riley提出的鴨子測(cè)試,

“鴨子測(cè)試”可以這樣表述:

“當(dāng)看到一只鳥走起來像鴨子、游泳起來像鴨子、叫起來也像鴨子,那么這只鳥就可以被稱為鴨子。”

在鴨子類型中,關(guān)注的不是對(duì)象的類型本身,而是它是如何使用的。例如,在不使用鴨子類型的語(yǔ)言中,我們可以編寫一個(gè)函數(shù),它接受一個(gè)類型為鴨的對(duì)象,并調(diào)用它的走和叫方法。在使用鴨子類型的語(yǔ)言中,這樣的一個(gè)函數(shù)可以接受一個(gè)任意類型的對(duì)象,并調(diào)用它的走和叫方法。如果這些需要被調(diào)用的方法不存在,那么將引發(fā)一個(gè)運(yùn)行時(shí)錯(cuò)誤。任何擁有這樣的正確的走和叫方法的對(duì)象都可被函數(shù)接受的這種行為引出了以上表述,這種決定類型的方式因此得名。

鴨子類型通常得益于不測(cè)試方法和函數(shù)中參數(shù)的類型,而是依賴文檔、清晰的代碼和測(cè)試來確保正確使用。從靜態(tài)類型語(yǔ)言轉(zhuǎn)向動(dòng)態(tài)類型語(yǔ)言的用戶通常試圖添加一些靜態(tài)的(在運(yùn)行之前的)類型檢查,從而影響了鴨子類型的益處和可伸縮性,并約束了語(yǔ)言的動(dòng)態(tài)特性。

-------------------------------------------

毫無疑問在python中對(duì)象也是一塊內(nèi)存,內(nèi)存中除了包含屬性、方法之外,還包含了對(duì)象得類型,我們通過引用來訪問對(duì)象,比如a=A(),首先python創(chuàng)建一個(gè)對(duì)象A,然后聲明一個(gè)變量a,再將變量a與對(duì)象A聯(lián)系起來。變量a是沒有類型得,它的類型取決于其關(guān)聯(lián)的對(duì)象。a=A()時(shí),a是一個(gè)A類型的引用,我們可以說a是A類型的,如果再將a賦值3,a=3,此時(shí)a就是一個(gè)整型的引用,但python并不是弱類型語(yǔ)言,在python中'2'+3會(huì)報(bào)錯(cuò),而在php中'2'+3會(huì)得到5。可以這么理解,在python中變量類似與c中的指針,和c不同的是python中的變量可以指向任何類型,雖然這么說不太準(zhǔn)確,但是理解起來容易點(diǎn)。

因此,在python運(yùn)行過程中,參數(shù)被傳遞過來之前并不知道參數(shù)的類型,雖然python中的方法也是后期綁定,但是和java中多態(tài)的后期綁定卻是不同的,java中的后期綁定至少知道對(duì)象的類型,而python中就不知道參數(shù)的類型。

還引用上次的例子:

class A:  
  def prt(self):  
    print "A"  
  
class B(A):  
  def prt(self):  
    print "B"  
      
class C(A):  
  def prt(self):  
    print "C"  
      
class D(A):  
  pass  
  
class E:  
  def prt(self):  
    print "E"  
  
class F:  
  pass  
  
def test(arg):  
  arg.prt()  
  
a = A()  
b = B()  
c = C()  
d = D()  
e = E()  
f = F()  
  
test(a)  
test(b)  
test(c)  
test(d)  
test(e)  
test(f)  

網(wǎng)站名稱:帶你了解python鴨子類型的相關(guān)原理-創(chuàng)新互聯(lián)
本文來源:http://chinadenli.net/article0/shpio.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站用戶體驗(yàn)虛擬主機(jī)品牌網(wǎng)站設(shè)計(jì)標(biāo)簽優(yōu)化建站公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司