Python零基礎(chǔ)入門學(xué)習(xí)31:類與面向?qū)ο缶幊蹋侯惗x中的特殊方法

:本文所有代碼均經(jīng)過Python 3.7實(shí)際運(yùn)行檢驗(yàn)稀轨,保證其嚴(yán)謹(jǐn)性姿现。

本文閱讀時間約為3分鐘肠仪。

類的特殊方法

類的特殊方法(special method)也被稱作魔術(shù)方法(magic method)。

在類定義中出現(xiàn)的一些特殊方法备典,可以方便地使用Python中的一些內(nèi)置操作异旧。

所有特殊方法的名稱以兩個下劃線"__"(兩個連接著的下劃線)開始和結(jié)束。

對象構(gòu)造器

__init__(self, [...)

對象的構(gòu)造器提佣,實(shí)例化對象時調(diào)用吮蛹。

對象析構(gòu)器

銷毀對象時也有個特殊方法:

__del__(self, [...)

例子如下:

from os.path import join

class FileObject:
    '''給文件對象進(jìn)行包裝從而確認(rèn)在刪除時文件流關(guān)閉'''
    def __init__(self, filepath='~', filename='sample.txt'):
        # 讀寫模式打開一個文件。
        self.file = open(join(filepath, filename), 'r+')
    
    def __del__(self):
        self.file.close()
        del self.file
算術(shù)運(yùn)算

算術(shù)操作符(從左向右計算拌屏,self作為左操作數(shù))

__add__(self, other): 使用+操作符潮针。
__sub__(self, other): 使用-操作符。
__mul__(self, other): 使用*操作符槐壳。
__div__(self, other): 使用/操作符然低。

反運(yùn)算(從右向左計算喜每,self作為右操作數(shù))

當(dāng)從左向右計算行不通务唐,左操作數(shù)不支持相應(yīng)操作時被調(diào)用:

__radd__(self, other): 使用+操作符。
__rsub__(self, other): 使用-操作符带兜。
__rmul__(self, other): 使用*操作符枫笛。
__rdiv__(self, other): 使用/操作符。

其中r表示right刚照,此時self是右操作數(shù)刑巧。

大小比較

__eq__(self, other):使用==操作符。equal
__ne__(self, other):使用!=操作符无畔。not equal
__lt__(self, other):使用<操作符啊楚。great than
__gt__(self, other):使用>操作符。less than
__le__(self, other):使用<=操作符浑彰。less and equal
__ge__(self, other):使用>=操作符恭理。great and equal
其它特殊方法

不僅數(shù)字類型可以使用+(或__add__())和-(或__sub__))等數(shù)學(xué)運(yùn)算符,例如字符串類型可以使用+進(jìn)行拼接郭变,使用*進(jìn)行賦值颜价。

__str__(self):自動轉(zhuǎn)換為字符串。
__repr__(self):返回一個用來表示對象的字符串诉濒。和上面的__str__(self)幾乎是一樣的功能周伦,只不過更正式。
__len__(self):返回元素個數(shù)未荒。

To be continued.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末专挪,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌寨腔,老刑警劉巖困肩,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異脆侮,居然都是意外死亡锌畸,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進(jìn)店門靖避,熙熙樓的掌柜王于貴愁眉苦臉地迎上來潭枣,“玉大人,你說我怎么就攤上這事幻捏∨枥纾” “怎么了?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵篡九,是天一觀的道長谐岁。 經(jīng)常有香客問我,道長榛臼,這世上最難降的妖魔是什么伊佃? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮沛善,結(jié)果婚禮上航揉,老公的妹妹穿的比我還像新娘。我一直安慰自己金刁,他們只是感情好帅涂,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著尤蛮,像睡著了一般媳友。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上产捞,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天醇锚,我揣著相機(jī)與錄音,去河邊找鬼轧葛。 笑死搂抒,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的尿扯。 我是一名探鬼主播求晶,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼衷笋!你這毒婦竟也來了芳杏?” 一聲冷哼從身側(cè)響起矩屁,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎爵赵,沒想到半個月后吝秕,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡空幻,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年烁峭,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片秕铛。...
    茶點(diǎn)故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡约郁,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出但两,到底是詐尸還是另有隱情鬓梅,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布谨湘,位于F島的核電站绽快,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏紧阔。R本人自食惡果不足惜坊罢,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望寓辱。 院中可真熱鬧艘绍,春花似錦、人聲如沸秫筏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽这敬。三九已至,卻和暖如春蕉朵,著一層夾襖步出監(jiān)牢的瞬間崔涂,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工始衅, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留冷蚂,地道東北人。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓汛闸,卻偏偏與公主長得像蝙茶,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子诸老,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評論 2 353

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