欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

跟老齊學(xué)Python之編寫類之二方法

系統(tǒng) 1615 0

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

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

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

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

class Person:
??? def __init__(self, name, lang="golang", website="www.google.com"):
??????? 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è)我們先不管,稍后會詳細(xì)分解。首先看看數(shù)據(jù)是如何在這個(gè)代碼中流轉(zhuǎn)的。為了能夠清楚,畫一張圖,所謂一圖勝千言萬語,有圖有真相。

跟老齊學(xué)Python之編寫類之二方法_第1張圖片

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

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

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

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

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

class Person:
??? def __init__(self, name, lang="golang", website="www.google.com"):
??????? 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é)果中可以看出,沒有報(bào)錯(cuò)。但是,info這個(gè)實(shí)例輸出的結(jié)果和laoqi實(shí)例輸出的結(jié)果一樣。原來,當(dāng)調(diào)用了info實(shí)例之后,運(yùn)行到author(),返回的是laoqi.name。所以,這里一定要用self實(shí)例。在調(diào)用不同的實(shí)例時(shí),self會自動的進(jìn)行匹配,當(dāng)然,匹配過程是python完成,仍然不用我們操心。

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

為什么要用到方法

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

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

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

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

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

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

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

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

編寫和操作方法

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

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

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

class Person:
??? def __init__(self, name, lang="golang", website="www.google.com"):
??????? 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

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

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


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 亚洲一区二区三区高清 | 欧美一性一乱一交 | 午夜视频久久 | 国产婷婷色一区二区三区在线 | 国产午夜永久福利视频在线观看 | 精品国产精品国产 | 成人在线视频网 | 天天干妹子 | 手机在线观看你懂得 | 国产成人精品一区二区三区视频 | 天天爽夜夜爽夜夜爽精品视频 | 国产精品亚洲va在线观看 | 色综合久久综合中文小说 | 一个看片免费视频www | 色综合亚洲精品激情狠狠 | 欧美狂猛xxxxx乱大交3 | 99久久精品免费看国产一区二区 | 日本不卡免费新一二三区 | 女女女女bbbbbb毛片在线 | 国产综合精品久久亚洲 | 欧美日韩国产在线 | 日韩欧美中文在线 | 在线播放三级 | 欧美成人精品一区二区三区 | 欧美不卡视频 | 男人天堂99| 欧美精品一区二区三区蜜桃视频 | 偷偷要色偷偷 | 国产亚洲精品不卡在线 | 亚洲色欲色欲www | 午夜剧院官方 | 亚洲欧洲精品视频在线观看 | 中文字幕专区 | 久久亚洲国产欧洲精品一 | 蜜芽在线 | 三级精品在线观看 | 中文字幕日韩欧美一区二区三区 | 刑事侦缉档案1 | 男女同床爽爽视频免费 | 99精品一区二区免费视频 | 国产女主播喷出白浆视频 |