最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

跟老齊學(xué)Python之編寫(xiě)類(lèi)之二方法

 更新時(shí)間:2014年10月11日 10:20:55   投稿:hebedich  
上一講中創(chuàng)建了類(lèi),并且重點(diǎn)講述了構(gòu)造函數(shù)以及類(lèi)實(shí)例,特別是對(duì)那個(gè)self,描述了不少。在講述構(gòu)造函數(shù)的時(shí)候特別提到,init()是一個(gè)函數(shù),只不過(guò)在類(lèi)中有一點(diǎn)特殊的作用罷了,每個(gè)類(lèi),首先要運(yùn)行它,它規(guī)定了類(lèi)的基本結(jié)構(gòu)。

數(shù)據(jù)流轉(zhuǎn)過(guò)程

除了在類(lèi)中可以寫(xiě)這種函數(shù)之外,在類(lèi)中還可以寫(xiě)別的函數(shù),延續(xù)上一講的例子:

復(fù)制代碼 代碼如下:

#!/usr/bin/env python
#coding:utf-8

class Person:
    def __init__(self, name, lang="golang", website="         self.name = name
        self.lang = lang
        self.website = website
        self.email = "
qiwsir@gmail.com"

    def author(self):
        return self.name

laoqi = Person("LaoQi")
info = Person("qiwsir",lang="python",website="qiwsir.github.io")

print "Author name from laoqi:",laoqi.author()
print "Author name from info:",info.author()

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

Author name from laoqi: LaoQi
Author name from info: qiwsir

 看官可能已經(jīng)注意了,這段代碼比上一講多了一個(gè)函數(shù)author(self),這個(gè)我們先不管,稍后會(huì)詳細(xì)分解。首先看看數(shù)據(jù)是如何在這個(gè)代碼中流轉(zhuǎn)的。為了能夠清楚,畫(huà)一張圖,所謂一圖勝千言萬(wàn)語(yǔ),有圖有真相。

定義類(lèi)Person,然后創(chuàng)建實(shí)例laoqi=Person("LaoQi"),看官注意觀察圖上的箭頭方向。laoqi這個(gè)實(shí)例和Person類(lèi)中的self對(duì)應(yīng),它們都是引用了實(shí)例對(duì)象(很多時(shí)候簡(jiǎn)化說(shuō)成是實(shí)例對(duì)象)。"LaoQi"是一個(gè)具體的數(shù)據(jù),通過(guò)構(gòu)造函數(shù)中的name參數(shù),傳給實(shí)例的屬性self.name,在類(lèi)Person中的另外一個(gè)方法author的參數(shù)列表中第一個(gè)就是self,表示要承接self對(duì)象,return self.name,就是在類(lèi)內(nèi)部通過(guò)self對(duì)象,把它的屬性self.name的數(shù)據(jù)傳導(dǎo)如author。

當(dāng)運(yùn)行l(wèi)aoqi.author()的時(shí)候,就是告訴上面的代碼,調(diào)用laoqi實(shí)例對(duì)象,并得到author()方法的結(jié)果,laoqi這個(gè)實(shí)例就自動(dòng)被告訴了author()(注意,self參數(shù)在這里不用寫(xiě),這個(gè)告訴過(guò)程是python自動(dòng)完成的,不用我們操心了),author方法就返回laoqi實(shí)例的屬性,因?yàn)榍懊嬉呀?jīng)完成了laoqi與self的對(duì)應(yīng)過(guò)程,所以這時(shí)候author里面的self就是laoqi,自然self.name=laoqi.name。

看官可以跟隨我在做一個(gè)實(shí)驗(yàn),那就是在author中,return laoqi.name,看看什么效果。因?yàn)榧热籰aoqi和self是同一個(gè)實(shí)例對(duì)象,直接寫(xiě)成laoqi.name是不是也可以呢?

復(fù)制代碼 代碼如下:

#!/usr/bin/env python
#coding:utf-8

class Person:
    def __init__(self, name, lang="golang", website="         self.name = name
        self.lang = lang
        self.website = website
        self.email = "
qiwsir@gmail.com"

    def author(self):
        #return self.name
        return laoqi.name       #返回

laoqi = Person("LaoQi")
info = Person("qiwsir",lang="python",website="qiwsir.github.io")

print "Author name from laoqi:",laoqi.author()
print "Author name from info:",info.author()

#輸出結(jié)果
Author name from laoqi: LaoQi   #laoqi實(shí)例輸出結(jié)果
Author name from info: LaoQi    #info實(shí)例輸出結(jié)果

 從結(jié)果中可以看出,沒(méi)有報(bào)錯(cuò)。但是,info這個(gè)實(shí)例輸出的結(jié)果和laoqi實(shí)例輸出的結(jié)果一樣。原來(lái),當(dāng)調(diào)用了info實(shí)例之后,運(yùn)行到author(),返回的是laoqi.name。所以,這里一定要用self實(shí)例。在調(diào)用不同的實(shí)例時(shí),self會(huì)自動(dòng)的進(jìn)行匹配,當(dāng)然,匹配過(guò)程是python完成,仍然不用我們操心。

OK,數(shù)據(jù)流轉(zhuǎn)過(guò)程,看官是否理解了呢?下面進(jìn)入方法編寫(xiě)的環(huán)節(jié)

為什么要用到方法

在類(lèi)里面,可以用def語(yǔ)句來(lái)編寫(xiě)函數(shù),但是,通常這個(gè)函數(shù)的樣子是這樣的:

復(fù)制代碼 代碼如下:

class ClassName:
    def __init__(self,*args):
        ...
    def method(self,*args):     #是一個(gè)在類(lèi)里面的函數(shù)
        ...

 在類(lèi)ClassName里面,除了前面那個(gè)具有初始化功能的構(gòu)造函數(shù)之外,還有一個(gè)函數(shù)method,這個(gè)函數(shù)和以前學(xué)習(xí)過(guò)的函數(shù)一樣,函數(shù)里面要寫(xiě)什么,也沒(méi)有特別的規(guī)定。但是,這個(gè)函數(shù)的第一個(gè)參數(shù)必須是self,或者說(shuō),可以沒(méi)有別的參數(shù),但是self是必須寫(xiě)上并且是第一個(gè)。這個(gè)self參數(shù)的作用前面已經(jīng)說(shuō)過(guò)了。

這樣看來(lái),類(lèi)里面的這個(gè)函數(shù)還有點(diǎn)跟以前函數(shù)不同的地方。

類(lèi)里面的這個(gè)函數(shù),我們就稱(chēng)之為方法。

之所以用方法,也是用類(lèi)的原因,也是用函數(shù)的原因,都是為了減少代碼的冗余,提高代碼的重用性,這也是OOP的原因。

方法怎樣被重用呢?看本最開(kāi)始的那段代碼,里面有一個(gè)author方法,不管是laoqi還是info實(shí)例,都用這個(gè)方法返回實(shí)例導(dǎo)入的名字。這就是體現(xiàn)了重用。

編寫(xiě)和操作方法

編寫(xiě)方法的過(guò)程和編寫(xiě)一個(gè)函數(shù)的過(guò)程一樣,需要注意的就是要在參數(shù)列表中第一個(gè)寫(xiě)上self,即使沒(méi)有其它的參數(shù)。

復(fù)制代碼 代碼如下:

#!/usr/bin/env python
#coding:utf-8

class Person:
    def __init__(self, name, lang="golang", website="         self.name = name
        self.lang = lang
        self.website = website
        self.email = "
qiwsir@gmail.com"

    def author(self, address):
        #return self.name
        return laoqi.name+" in "+address

laoqi = Person("LaoQi")
info = Person("qiwsir",lang="python",website="qiwsir.github.io")

print "Author name from laoqi:",laoqi.author("China")
print "Author name from info:",info.author("Suzhou")

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

Author name from laoqi: LaoQi in China
Author name from info: LaoQi in Suzhou

 這段代碼中,對(duì)author方法增加了一個(gè)參數(shù)address,當(dāng)調(diào)用這個(gè)方法的時(shí)候:laoqi.author("China"),要對(duì)這個(gè)參數(shù)賦值,看官特別注意,在類(lèi)中,這個(gè)方法顯示是有兩個(gè)參數(shù)(self,address),但是在調(diào)用的時(shí)候,第一個(gè)參數(shù)是自動(dòng)將實(shí)例laoqi與之對(duì)應(yīng)起來(lái),不需要顯化賦值,可以理解成是隱含完成的(其實(shí),也可以將laoqi看做隱藏的主體,偷偷地更self勾搭上了)。

通過(guò)上面的講述,看官可以試試類(lèi)了。提醒,一定要對(duì)類(lèi)的數(shù)據(jù)流通過(guò)程清晰。

相關(guān)文章

  • python實(shí)現(xiàn)傅里葉級(jí)數(shù)展開(kāi)的實(shí)現(xiàn)

    python實(shí)現(xiàn)傅里葉級(jí)數(shù)展開(kāi)的實(shí)現(xiàn)

    這篇文章主要介紹了python實(shí)現(xiàn)傅里葉級(jí)數(shù)展開(kāi)的實(shí)現(xiàn),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • Python讀取鍵盤(pán)輸入的2種方法

    Python讀取鍵盤(pán)輸入的2種方法

    這篇文章主要介紹了Python讀取鍵盤(pán)輸入的2種方法,主要使用的就是raw_input函數(shù)和input函數(shù),本文分別給出使用實(shí)例,需要的朋友可以參考下
    2015-06-06
  • python爬取免費(fèi)代理并驗(yàn)證代理是否可用

    python爬取免費(fèi)代理并驗(yàn)證代理是否可用

    這篇文章主要介紹了python爬取免費(fèi)代理并驗(yàn)證是否可用,通過(guò)本文給大家介紹了在什么情況下會(huì)用到代理并分享腳本的完整代碼,需要的朋友可以參考下
    2022-01-01
  • pycharm 2021.3最新激活碼有效期至2100年(親測(cè)可用)

    pycharm 2021.3最新激活碼有效期至2100年(親測(cè)可用)

    這篇文章主要介紹了pycharm 2021.3最新激活碼有效期至2100年(親測(cè)可用)
    2021-02-02
  • Pytorch轉(zhuǎn)keras的有效方法,以FlowNet為例講解

    Pytorch轉(zhuǎn)keras的有效方法,以FlowNet為例講解

    這篇文章主要介紹了Pytorch轉(zhuǎn)keras的有效方法,以FlowNet為例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-05-05
  • python爬取哈爾濱天氣信息

    python爬取哈爾濱天氣信息

    這篇文章主要為大家詳細(xì)介紹了python爬蟲(chóng)抓取哈爾濱天氣信息,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • python中的默認(rèn)編碼使用

    python中的默認(rèn)編碼使用

    這篇文章主要介紹了python中的默認(rèn)編碼使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • python實(shí)現(xiàn)彈窗祝福效果

    python實(shí)現(xiàn)彈窗祝福效果

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)彈窗祝福效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • Python PIL實(shí)現(xiàn)GIF壓縮工具

    Python PIL實(shí)現(xiàn)GIF壓縮工具

    本文將結(jié)合wxPython的GUI框架和PIL(Python Imaging Library)的圖像處理能力編寫(xiě)一個(gè)GIF壓縮工具,并提供了兩種壓縮方式,感興趣的小伙伴可以了解下
    2024-10-10
  • Python利用Turtle繪制哆啦A夢(mèng)和小豬佩奇

    Python利用Turtle繪制哆啦A夢(mèng)和小豬佩奇

    turtle庫(kù)是python的基礎(chǔ)繪圖庫(kù),經(jīng)常被用來(lái)介紹編程知識(shí)的方法庫(kù),是標(biāo)準(zhǔn)庫(kù)之一,利用turtle可以制作很多復(fù)雜的繪圖。本文將為大家介紹通過(guò)turtle庫(kù)繪制制哆啦A夢(mèng)和小豬佩奇,感興趣的小伙伴可以學(xué)習(xí)一下
    2022-04-04

最新評(píng)論

明溪县| 怀仁县| 台湾省| 固阳县| 大荔县| 黑龙江省| 万州区| 通化市| 和硕县| 宁陕县| 盐边县| 龙江县| 合川市| 富顺县| 赤城县| 阜新市| 宁南县| 普安县| 建瓯市| 八宿县| 江川县| 夏邑县| 桐城市| 日照市| 常德市| 西峡县| 来安县| 吴川市| 泰州市| 祁门县| 宁强县| 盈江县| 东乡族自治县| 凤翔县| 永修县| 嵊泗县| 高邮市| 澄迈县| 延吉市| 南京市| 道孚县|