Python類中的方法是如何工作的

在OO(面向?qū)ο?編程中,類中的方法有多種形式:實例方法袖肥、靜態(tài)方法咪辱、類方法、甚至還可以有抽象方法椎组,本文來說說實例方法在Python中是如何工作的油狂,后面再來談其他方法。

先來定義一個最簡單類:

classPerson:

def__init__(self, name):

self.name = name

defeat(self):

print(self)# <__main__.Person object at 0x00

print(type(self))#

print(self.name +" is eating")

這里的eat就是一個實例方法寸癌,跟普通函數(shù)差不多专筷,唯一的不同是必須指定一個參數(shù)self,盡管名字可以任意命名蒸苇,但約定俗成的叫 self磷蛹,self 是什么?它代表Person類的實例對象溪烤,就像Java中的this一樣弦聂,看下面的測試代碼

p = Person("zhangsan")

p.eat()

p與self指向同一個實例對象

那么可不可以通過類直接調(diào)用呢?不行氛什!

Person.eat()

TypeError:?eat()?missing?1?required?positional?argument:?'self'

那為什么通過實例p調(diào)用eat方法不需要傳遞self參數(shù)呢莺葫?這個就要從函數(shù)與方法的區(qū)別說起。來看看下面的代碼:

print(Person.eat)

print(p.eat)

# 輸出

>

前者是函數(shù)枪眉,后者是方法捺檬,有人說函數(shù)定義在類外面,方法定義在類里面贸铜,顯示這種說法不全面堡纬,那么他們的區(qū)別在哪里?

首先方法是與某個對象相關(guān)聯(lián)的蒿秦,而函數(shù)則不是烤镐,p.eat就是一個綁定了實例對象的方法,函數(shù)的所有參數(shù)都需要顯示地傳遞棍鳖,而方法中的數(shù)據(jù)是隱式傳遞的炮叶。Person.eat是函數(shù),參數(shù)要顯示地傳遞渡处,Person.eat(p)

而方法因為綁定了實例對象镜悉,所以他調(diào)用的時候無需再傳遞實例對象了,直接調(diào)用p.eat()就可以了医瘫,self參數(shù)Python會自動傳遞過去侣肄,如果重復(fù)傳遞會報錯。

p.eat(p)

TypeError: eat() takes1positional argument but2were given

所以醇份,本質(zhì)上

p.eat()?等價于?Person.eat(p)

那么對于實例方法稼锅,self 參數(shù)從語言設(shè)計的角度來說吼具,是不是可以去掉呢,這個問題 Python 之父 Guido van Rossum 撰文解釋過這件事矩距,理由是 “Explicit is better than implicit”在信息更新的非侈趾校快速,又迎來了大數(shù)據(jù)的時代剩晴, 各行各業(yè)如果不與時俱進锣咒,都將面臨優(yōu)勝劣汰侵状,知識是不斷的更新的赞弥,只有一技之長,才能立于不敗之地趣兄。

學習Python編程語言绽左,是大家走入編程世界的最理想選擇,在初期入門階段就可以自己動手做一些實用的小項目艇潭,這樣會極大的增進我們學習編程的 熱情拼窥。學好python你需要一個良好的環(huán)境,一個優(yōu)質(zhì)的開發(fā)交流群蹋凝,群里都是那種相互幫助的人才是可以的鲁纠,我有建立一個python學習交流群,在群里我們相互幫助鳍寂,相互關(guān)心改含,相互分享內(nèi)容,這樣出問題幫助你的人就比較多迄汛,群號是301加上056最後069捍壤,這樣就可以找到大神聚合的群,如果你只愿意別人幫助你鞍爱,不愿意分享或者幫助別人鹃觉,那就請不要加了,你把你會的告訴別人這是一種分享睹逃。

感覺寫的好盗扇,對你有幫助,就點個贊唄沉填,別光只收藏哈.~( ̄▽ ̄)~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末粱玲,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子拜轨,更是在濱河造成了極大的恐慌抽减,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件橄碾,死亡現(xiàn)場離奇詭異卵沉,居然都是意外死亡颠锉,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進店門史汗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來琼掠,“玉大人,你說我怎么就攤上這事停撞〈赏埽” “怎么了?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵戈毒,是天一觀的道長艰猬。 經(jīng)常有香客問我,道長埋市,這世上最難降的妖魔是什么冠桃? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮道宅,結(jié)果婚禮上食听,老公的妹妹穿的比我還像新娘。我一直安慰自己污茵,他們只是感情好樱报,可當我...
    茶點故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著泞当,像睡著了一般迹蛤。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上零蓉,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天笤受,我揣著相機與錄音,去河邊找鬼敌蜂。 笑死箩兽,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的章喉。 我是一名探鬼主播汗贫,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼秸脱!你這毒婦竟也來了落包?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤摊唇,失蹤者是張志新(化名)和其女友劉穎咐蝇,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體巷查,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡有序,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年抹腿,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片旭寿。...
    茶點故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡警绩,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出盅称,到底是詐尸還是另有隱情肩祥,我是刑警寧澤,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布缩膝,位于F島的核電站混狠,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏逞盆。R本人自食惡果不足惜檀蹋,卻給世界環(huán)境...
    茶點故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一松申、第九天 我趴在偏房一處隱蔽的房頂上張望云芦。 院中可真熱鬧,春花似錦贸桶、人聲如沸舅逸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽琉历。三九已至,卻和暖如春水醋,著一層夾襖步出監(jiān)牢的瞬間旗笔,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工拄踪, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蝇恶,地道東北人。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓惶桐,卻偏偏與公主長得像撮弧,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子姚糊,可洞房花燭夜當晚...
    茶點故事閱讀 45,037評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 1.1面向?qū)ο?面向?qū)ο?object-oriented ;簡稱: OO)至今還沒有統(tǒng)一的概念 我這里把它定義為:...
    TENG書閱讀 567評論 0 0
  • 教程地址:python進階 - 慕課網(wǎng) python函數(shù)式編程 變量可以指向函數(shù): f = absprint(f)...
    竹口小生閱讀 559評論 0 2
  • 20- 枚舉,枚舉原始值,枚舉相關(guān)值,switch提取枚舉關(guān)聯(lián)值 Swift枚舉: Swift中的枚舉比OC中的枚...
    iOS_恒仔閱讀 2,281評論 1 6
  • 要點: 函數(shù)式編程:注意不是“函數(shù)編程”贿衍,多了一個“式” 模塊:如何使用模塊 面向?qū)ο缶幊蹋好嫦驅(qū)ο蟮母拍睢傩浴?..
    victorsungo閱讀 1,510評論 0 6
  • 【作者】白宇晨 【導(dǎo)師】袁文魁救恨、王玉印 【分舵】縱橫思海 【舵主】羅汝錫 【導(dǎo)圖解說】 這是我第一次用八何分析法贸辈,...
    宇宙晨光閱讀 453評論 9 3