成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

【Python從入門到實(shí)戰(zhàn)】一篇文章帶你搞懂Python中的類~

cloud / 3562人閱讀

摘要:小栗子對(duì)于可樂來講,只要是同一個(gè)品牌的可樂,他們就有著同樣的成分,這被稱之為配方。小栗子對(duì)于可樂來說,按照配方把可樂生產(chǎn)出來的過程就是實(shí)例化的過程。小栗子類的屬性與正常的變量并無區(qū)別。

前言

我是栗子,帶大家從零開始學(xué)習(xí)Python,希望每篇文章都能讓你收獲滿滿!

今天我們要說的是面向?qū)ο蟮暮诵?----類,類能幫我們把復(fù)雜的事情變得有條理,有順序,希望大

家通過學(xué)習(xí)類能改善自己的編碼風(fēng)格,使代碼變得更為好看,更加通俗易懂。

什么是類?

生物有不同的種類,食物有不同的種類,人類社會(huì)的種種商品也有不同的種類。但凡可被稱之為一

類的物體,他們都有著相似的特征和行為方式。用編程表示就是“類”(class)。

類是有一些系列有共同特征和行為事物的抽象概念的總和。

1)定義一個(gè)類

當(dāng)我們使用類的時(shí)候,首先需要?jiǎng)?chuàng)建一個(gè)類。使用關(guān)鍵字class可以做到這點(diǎn);你還需要給這個(gè)類

起個(gè)名字和繼承關(guān)系。

小栗子:

對(duì)于可樂來講,只要是同一個(gè)品牌的可樂,他們就有著同樣的成分,這被稱之為配方。我們用

Python 中的類來表達(dá)這件事:

class CocaCola:    formula = ["caffeine","sugar","water","soda"]

2)類的實(shí)例化

我們繼續(xù)按照定義好的配方(類)來生產(chǎn)可樂。只要配方一樣味道都是相同的。

coke_for_me = CocaCola()coke_for_you = CocaCola()

在左邊我們創(chuàng)建一個(gè)變量,右邊寫上類的名稱,這樣看起來很像是賦值的行為,我們稱之為類的實(shí)例化。而被實(shí)例化后的對(duì)象,我們稱之為實(shí)例(instance),或者說是類的實(shí)例。

小栗子:

對(duì)于可樂來說,按照配方把可樂生產(chǎn)出來的過程就是實(shí)例化的過程。

print(CocaCola.formula)print(coke_for_me.formula)print(coke_for_you.formula)

運(yùn)行結(jié)果:

>>> ["caffeine","sugar","water","soda"]>>> ["caffeine","sugar","water","soda"]>>> ["caffeine","sugar","water","soda"]

3)類屬性引用

在類的名字后面輸入?.,IDE 就會(huì)自動(dòng)聯(lián)想出我們之前在定義類的時(shí)候?qū)懺诶锩娴膶傩裕@就是

類屬性的引用(attribute references)。類的屬性會(huì)被所有類的實(shí)例共享,所以當(dāng)你在類的實(shí)例后面

再點(diǎn)上?.?,索引用的屬性值是完全一樣的。

小栗子:

類的屬性與正常的變量并無區(qū)別。

for element in coke_for_me.formula:    print(element)

運(yùn)行結(jié)果:

>>> caffeine>>> sugar>>> water>>> soda

4)實(shí)例屬性

在創(chuàng)建了類之后,通過?object.new_atrr的形式進(jìn)行一個(gè)賦值,于是我們就得到了一個(gè)新的實(shí)例的變量,實(shí)例的變量就是實(shí)例變量,而實(shí)例變量有一個(gè)專有的術(shù)語,我們稱之為實(shí)例屬性(Instance Atrribute)

小栗子:

通過下面的代碼,我們給在中國(guó)生產(chǎn)的可口可樂貼上了中文字樣的“可口可樂”標(biāo)簽,同樣的配方,不一樣的名稱,就帶來了不同的效果,中文的可樂變得更加受歡迎!

這說明生產(chǎn)的過程中有必要做一些獨(dú)有的本地化調(diào)整:

class CocaCola:    formula = ["caffeine","sugar","water","soda"]coke_for_China = CocaCola()coke_for_China.local_logo = "可口可樂"     #創(chuàng)建實(shí)例屬性print(coke_for_China.local_logo)          #打印實(shí)例屬性引用結(jié)果

運(yùn)行結(jié)果:

>>> 可口可樂

5)實(shí)例方法

類的實(shí)例可以引用屬性,方法就是函數(shù),但我們把這個(gè)函數(shù)稱之為方法(Method)。

方法是供實(shí)例使用的,因此我們還可以稱之為實(shí)例方法(Instance Method)。

小栗子:

當(dāng)你喝掉一瓶可樂的時(shí)候,你會(huì)從咖啡因和大量的糖分中獲得能量,如果使用類的方法來表示可樂的這個(gè)“功能”的話,那應(yīng)該是這樣的:

class CocaCola:    formula = ["caffeine","sugar","water","soda"]    def drink(self):        print("Energy!")        coke = CocaCola()coke.drink()

運(yùn)行結(jié)果:

>>> Energy!

self?

我知道你現(xiàn)在的關(guān)注點(diǎn)一定在這個(gè)奇怪的地方——似乎沒有派上任何用場(chǎng)的?self?參數(shù)。我們來說明一下原理,其實(shí)很簡(jiǎn)單,我們不妨修改一下代碼:

class CocaCola:    formula = ["caffeine","sugar","water","soda"]    def drink(coke):    # HERE!        print("Energy!")    coke = CocaCola()coke.drink()

運(yùn)行結(jié)果:

>>> Energy!

怎么樣,現(xiàn)在有些頭緒了吧?和你想的一樣,這個(gè)參數(shù)其實(shí)就是被創(chuàng)建的實(shí)例本身!就是將一個(gè)個(gè)對(duì)象作為參數(shù)放入函數(shù)括號(hào)內(nèi)。

再進(jìn)一步說,一旦一個(gè)類被實(shí)例化,那么我們其實(shí)可以同樣使用原來的方式:

coke = CocaColacoke.drink() == CocaCola.drink(coke) #左右兩邊的寫法完全一致

被實(shí)例化的對(duì)象會(huì)被編譯器默默地傳入后面方法的括號(hào)中,作為第一個(gè)參數(shù)。

上面這兩種方法是一樣的,但是我們更多地會(huì)寫成前面那種形式。

其實(shí)?self?這個(gè)參數(shù)名稱是可以隨意修改名稱的(編譯器并不會(huì)因此而報(bào)錯(cuò)),但是按照 Python 的

規(guī)矩,我們還是統(tǒng)一使用?self。

類的繼承

時(shí)代在變遷,可樂的種類也在變化我們按照最新的來定于:

class CocaCola:    calories    = 140    sodium      = 45    total_carb  = 39    caffeine    = 34    ingredients =  [             "High Fructose Corn Syrup",        "Carbonated Water",        "Phosphoric Acid",        "Natural Flavors",        "Caramel Color",        "Caffeine"     ]    def __init__(self,logo_name):        self.local_logo = logo_name        def drink(self):        print("You got {} cal energy!".format(self.calories))

不同的本地化策略和新的種類的開發(fā),使得生產(chǎn)并非僅僅是換個(gè)標(biāo)簽這么簡(jiǎn)單了,包裝、容積、甚至是配方都會(huì)發(fā)生變化,但唯一不變的是:它們永遠(yuǎn)是可口可樂。

所有的子品類都會(huì)繼承可口可樂的品牌,Python 中類自然也有對(duì)應(yīng)的概念,叫做類的繼承

(inheritance),我們拿無咖可樂(CAFFEINE-FREE)作為例子:

class CaffeineFree(CocaCola):    caffeine = 0    ingredients =  [        "High Fructose Corn Syrup",        "Carbonated Water",        "Phosphoric Acid",        "Natural Flavors",        "Caramel Color",    ]coke_a = CaffeineFree("Cocacola-FREE")coke_a.drink()

我們?cè)谛碌念?CaffeineFree 后面的括號(hào)中放入 CocaCola,這就表示這個(gè)類是繼承于 CocaCola 這

個(gè)父類的,而 CaffeineFree 則成為了 CocaCola 子類。類中的變量和方法可以完全被子類繼承,

但如需有特殊的改動(dòng)也可以進(jìn)行覆蓋(override)

可以看到CAFFEINE-FREE存在著咖啡因含量、成分這兩處不同的地方,并且在新的類中也僅僅是

重寫了這兩個(gè)地方,其他沒有重寫的地方,方法和屬性都能照常使用。

結(jié)尾

哈哈哈 !文寫到這里結(jié)束了,下一篇入門到實(shí)戰(zhàn)的系列大概率會(huì)寫第三方模塊的一些東西,如果

有這方面還不是很清楚的小可愛,可以提前預(yù)約下~

源碼基地:點(diǎn)擊藍(lán)色字體或私信小編06即可免費(fèi)拿!往期源碼也都在地哦~

想跟大家一起交流學(xué)習(xí)滴可以加入我的公眾號(hào)關(guān)注下哈:Python顧木子吖!

歡迎一起學(xué)習(xí)交流、往期的文章內(nèi)容項(xiàng)目素材源碼等都在里面可以找到滴!

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/123371.html

相關(guān)文章

  • 以??簡(jiǎn)單易懂??的語言帶你搞懂有監(jiān)督學(xué)習(xí)算法【附Python代碼詳解】機(jī)器學(xué)習(xí)系列之KNN篇

    必須要看的前言 本文風(fēng)格:以??簡(jiǎn)單易懂??的語言帶你徹底搞懂KNN,了解什么是有監(jiān)督學(xué)習(xí)算法。 認(rèn)真看完這篇文章,徹底了解KNN、了解監(jiān)督學(xué)習(xí)算法絕對(duì)是一樣很簡(jiǎn)單的事情。 注:本篇文章非常詳細(xì),同時(shí)我也附加了Python代碼,歡迎收藏后慢慢閱讀。 目錄 必須要看的前言監(jiān)督學(xué)習(xí)算法KNN/K近鄰算法1 算法原理1.1 實(shí)現(xiàn)過程1.2 距離的確定 2 算法的優(yōu)缺點(diǎn)3 算法的變種3.1 變...

    MoAir 評(píng)論0 收藏0
  • 道大廠面試題帶你搞懂事件循環(huán)機(jī)制

    本文涵蓋 面試題的引入 對(duì)事件循環(huán)面試題執(zhí)行順序的一些疑問 通過面試題對(duì)微任務(wù)、事件循環(huán)、定時(shí)器等對(duì)深入理解 結(jié)論總結(jié) 面試題 面試題如下,大家可以先試著寫一下輸出結(jié)果,然后再看我下面的詳細(xì)講解,看看會(huì)不會(huì)有什么出入,如果把整個(gè)順序弄清楚 Node.js 的執(zhí)行順序應(yīng)該就沒問題了。 async function async1(){ console.log(async1 start) ...

    ShowerSun 評(píng)論0 收藏0
  • 能做什么如何去做,帶你快速掌握Python編程基礎(chǔ)與實(shí)戰(zhàn)

    摘要:本文的分享主要圍繞以下幾個(gè)方面能做什么常見應(yīng)用場(chǎng)景介紹如何學(xué)習(xí)語法基礎(chǔ)實(shí)戰(zhàn)面向?qū)ο缶幊虒?shí)戰(zhàn)練熟基礎(chǔ)小游戲項(xiàng)目的實(shí)現(xiàn)與實(shí)戰(zhàn)一能做什么一種編程語言往往可以應(yīng)用于多方面,有些方面比較常用,有些方面極為常用。比如表示是一個(gè)空列表。 摘要:Python語言的教程雖然隨處可見,但是忙于日常業(yè)務(wù)/學(xué)習(xí)的你或許:一直想要找個(gè)時(shí)間學(xué)一點(diǎn),但是又不知道該從何下手?本文將從Python能做什么,如何學(xué)習(xí)Py...

    BLUE 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<