第四章 朝思暮想是對象

4.1 輕松看對象

4.1.1 面向?qū)ο笳Z言的來歷

  • Simula語言
  • C++語言
  • Java語言
  • C#語言
  • Objective-C語言
  • Python


4.1.2 類

Class 類名:
????屬性變量/方法函數(shù)

class:用來描述具有相同的屬性和方法的對象的集合寥殖。它定義了該集合中每個對象所共有的屬性和方法躯概。

object:所有類都會繼承的類文兢,所有類的基類晨缴。

屬性 attribute:類內(nèi)部定義的變量殿托,說明類的屬性焚碌,所有屬于該類的對象會共享這些屬性佛吓。

方法 method:類內(nèi)部定義的函數(shù)蛇更,類的行為屬性。第一個參數(shù)必須是用于指代對象自身的self筋讨,調(diào)用時不用傳入數(shù)據(jù)埃叭。


4.1.3 對象

對象:對象名 = 類名()。對象是類的實(shí)例悉罕。

屬性引用:對象.屬性赤屋。

對象屬性設(shè)置:在類中通過self參數(shù)設(shè)定,用對象.屬性來操作壁袄。必須在某個方法內(nèi)部才能操作類屬性类早,所以對象屬性無法在類下方直接賦初值。

初始化對象屬性:__init__()然想。

  • 每當(dāng)對象建立時被調(diào)用莺奔,設(shè)定對象屬性。
  • 加入的其他指令會在創(chuàng)建對象時執(zhí)行。
  • 在調(diào)用類時令哟,類的后面可以跟一個參數(shù)列表恼琼。這里放入的數(shù)據(jù)將傳給__init__()的參數(shù)。

self:可以在一個方法內(nèi)部調(diào)用同一類的其他方法屏富。


4.1 繼承者們

4.2.1 子類

class 子類名(基類名):
????...

子類:由基類派生的新類晴竞。

繼承:子類會享有基類的所有屬性。繼承的過程中可以再子類中增加基類不存在的屬性狠半。


4.2.2 屬性覆蓋

屬性覆蓋:在子類中替換基類已經(jīng)存在了的屬性噩死。

super:super().被覆蓋的方法名()。一個內(nèi)置類神年,在子類中調(diào)用基類中被覆蓋的方法已维,能產(chǎn)生一個指代父類的對象。


4.3 那些年已日,錯過的對象

4.3.1 列表對象

類型:對象所屬類的名字垛耳。

內(nèi)置類:Python自帶的提前定義好的類。

  • type(obj):返回參數(shù)的數(shù)據(jù)類型飘千。
  • dir(obj):來查詢一個類或者對象的所有屬性堂鲜。不帶參數(shù)時,返回當(dāng)前范圍內(nèi)的變量护奈、方法和定義的類型列表缔莲;帶參數(shù)時,返回參數(shù)的屬性霉旗、方法列表痴奏。如果參數(shù)包含方法dir(),該方法將被調(diào)用厌秒。如果參數(shù)不包含dir()抛虫,該方法將最大限度地收集參數(shù)信息。
  • help(obj):查詢說明文檔简僧。

pass:占位關(guān)鍵字。什么也不做雕欺,保持了程序結(jié)構(gòu)的完整性岛马。

list的方法:列表名.方法名(參數(shù))。

  • 列表名.acount(obj):統(tǒng)計某個元素在列表中出現(xiàn)的次數(shù)屠列。

  • 列表名.index(obj):從列表中找出某個值第一個匹配項(xiàng)的索引位置啦逆。

  • 列表名.append(obj):在列表末尾添加新的元素。

  • 列表名.sort(cmp = None, key = None, reverse = False):排序笛洛。

    • cmp:可選參數(shù), 如果指定了該參數(shù)會使用該參數(shù)的方法進(jìn)行排序夏志。
    • key:主要是用來進(jìn)行比較的元素,只有一個參數(shù)苛让,具體的函數(shù)的參數(shù)就是取自于可迭代對象中沟蔑,指定可迭代對象中的一個元素來進(jìn)行排序湿诊。
    • reverse:排序規(guī)則,reverse = True 降序瘦材, reverse = False 升序(默認(rèn))厅须。
  • 列表名.reverse():顛倒次序。

  • 列表名.pop():移除列表中的一個元素食棕,并且返回該元素的值朗和。

  • 列表名.remove(obj):移除列表中某個值的第一個匹配項(xiàng)。

  • 列表名.insert(index, obj):將對象插入列表簿晓。

  • 列表名.clear():清空列表眶拉。

  • 列表名.extend(seq):用新列表擴(kuò)展原來的列表。


4.3.2 元組與字符串對象

元組的方法:元組名.方法名()憔儿。元組只能進(jìn)行查閱忆植,不能進(jìn)行修改操作。

  • 元組名.count(obj):統(tǒng)計某個元素在元組中出現(xiàn)的次數(shù)皿曲。

  • 元組名.index(obj):從元組中找出某個值第一個匹配項(xiàng)的索引位置唱逢。

字符串的方法:字符串名.方法名(參數(shù))。字符串是元組的一種屋休,通過刪除原有字符串坞古,再建立一個新的字符串的方法,能改變字符串劫樟。沒有違背元組的不可變性痪枫。

  • 字符串名.count(sub, start = 0,end = len(string)):返回字符串里某個字符出現(xiàn)的次數(shù)。

    • sub:搜索的子字符串
    • start:字符串開始搜索的位置叠艳。默認(rèn)為第一個字符,第一個字符索引值為0奶陈。
    • end:字符串中結(jié)束搜索的位置。字符中第一個字符的索引為 0附较。默認(rèn)為字符串的最后一個位置吃粒。
  • 字符串名.find(str, beg = 0, end = len(string)):檢測字符串中是否包含子字符串。如果包含子字符串返回開始的索引值拒课,否則返回-1徐勃。

  • 字符串名.index(str, beg = 0, end = len(string)):檢測字符串中是否包含子字符串。如果包含子字符串返回開始的索引值早像,否則報錯僻肖。

  • 字符串名.rfind(str, beg = 0 end = len(string)):返回字符串最后一次出現(xiàn)的位置(從右向左查詢),如果沒有匹配項(xiàng)則返回-1卢鹦。

  • 字符串名.rindex(str, beg = 0 end = len(string)):返回字符串最后一次出現(xiàn)的位置(從右向左查詢)臀脏,如果沒有匹配項(xiàng)則報錯。

  • 字符串名.isalnum():如果字符串至少有一個字符并且所有字符都是字母或數(shù)字則返回True,否則返回False。

  • 字符串名.isalpha():如果字符串至少有一個字符并且所有字符都是字母則返回 True,否則返回False揉稚。

  • 字符串名.isdigit():如果字符串至少有一個字符并且只包含數(shù)字則返回True秒啦,否則返回False。

  • 字符串名.istitle():如果字符串至少有一個字符并且所有的詞的首字母都是大寫則返回True窃植,否則返回False帝蒿。

  • 字符串名.isspace():如果字符串至少有一個字符并且只包含空格,則返回True巷怜,否則返回False葛超。

  • 字符串名.islower():如果字符串中包含至少一個區(qū)分大小寫的字符,并且所有這些(區(qū)分大小寫的)字符都是小寫延塑,則返回True绣张,否則返回False。

  • 字符串名.isupper():如果字符串中包含至少一個區(qū)分大小寫的字符关带,并且所有這些(區(qū)分大小寫的)字符都是大寫侥涵,則返回True,否則返回False宋雏。

  • 字符串名.split(str="", num=string.count(str)):通過指定分隔符對字符串進(jìn)行切片芜飘,如果參數(shù)num有指定值,則分隔num+1個子字符串磨总。返回分割后的字符串列表嗦明。

    • str:分隔符,默認(rèn)為所有的空字符蚪燕,包括空格娶牌、換行(\n)、制表符(\t)等馆纳。
    • num:分割次數(shù)诗良。默認(rèn)為 -1, 即分隔所有。
  • 字符串名.rsplit(str="", num=string.count(str))):通過指定分隔符對字符串從右向左進(jìn)行切片鲁驶,如果參數(shù)num有指定值鉴裹,則分隔num+1個子字符串。返回分割后的字符串列表钥弯。

  • 字符串名.join(seq):以字符串作為分隔符壹罚,將seq中所有的元素(的字符串表示)合并為一個新的字符串

  • 字符串名.strip([chars]):截掉字符串左邊的空格或指定字符。

  • 字符串名.replace(old, new[, max]):把字符串中的old(舊字符串)替換成new(新字符串)寿羞,如果指定第三個參數(shù)max,則替換不超過 max 次赂蠢。

  • 字符串名.capitalize():把字符串的第一個字符大寫绪穆。

  • 字符串名.lower():轉(zhuǎn)換字符串中所有大寫字符為小寫。

  • 字符串名.upper():轉(zhuǎn)換字符串中的小寫字母為大寫。

  • 字符串名.swapcase():翻轉(zhuǎn)字符串中的大小寫玖院。

  • 字符串名.title():轉(zhuǎn)換所有的單詞拼寫首字母為大寫菠红,且其他字母為小寫。

  • 字符串名.centet(width[, fillchar]):返回一個原字符串居中,并使用fillchar(默認(rèn)為空格)填充至長度width的新字符串难菌。

  • 字符串名.ljust(width[, fillchar]):返回一個原字符串左對齊,并使用fillchar(默認(rèn)為空格)填充至長度width的新字符串试溯。如果指定的長度小于原字符串的長度則返回原字符串。

  • 字符串名.rjust(width[, fillchar]):返回一個原字符串右對齊,并使用fillchar(默認(rèn)為空格)填充至長度width的新字符串郊酒。如果指定的長度小于原字符串的長度則返回原字符串遇绞。

  • 字符串名.endswith(suffix[, start[, end]]):用于判斷字符串是否以指定后綴suffix結(jié)尾,如果以指定后綴結(jié)尾返回True燎窘,否則返回False摹闽。可選參數(shù)"start"與"end"為檢索字符串的開始與結(jié)束位置褐健。

  • 字符串名.expandtabs(tabsize=8):把字符串中的tab符號('\t')轉(zhuǎn)為空格付鹿,tab符號('\t')默認(rèn)的空格數(shù)是8。

  • 字符串名.lstrip([chars]):截掉字符串開頭指定的字符(默認(rèn)為空格)或字符序列蚜迅。

  • 字符串名.rstrip([chars]):截掉字符串結(jié)尾指定的字符(默認(rèn)為空格)或字符序列舵匾。

  • 字符串名.strip([chars]):移除字符串頭尾指定的字符(默認(rèn)為空格)或字符序列。

  • 字符串名.splitlines([keepends]):按照行('\r', '\r\n', \n')分隔谁不,返回一個包含各行作為元素的列表坐梯,如果參數(shù)keepends為False,不包含換行符拍谐,如果為True烛缔,則保留換行符。

  • 字符串.startswith(substr, beg=0,end=len(string)):檢查字符串是否是以指定子字符串開頭轩拨,如果是則返回True践瓷,否則返回False。如果參數(shù)beg和end指定值亡蓉,則在指定范圍內(nèi)檢查晕翠。

  • 字符串名.zfill(width):返回指定長度的字符串,原字符串右對齊砍濒,前面填充0淋肾。


4.3.3 詞典對象

詞典的方法:詞典名.方法名(參數(shù))。

  • 詞典名.key():以列表返回一個詞典所有的鍵爸邢。

  • 詞典名.values():以列表返回詞典中的所有值樊卓。

  • 詞典名.claer():刪除詞典內(nèi)所有元素。

  • 詞典名.copy():返回一個詞典的淺復(fù)制杠河,即引用碌尔。

  • 詞典名.fromkeys(seq[, value]): 創(chuàng)建一個新詞典浇辜,以序列 seq 中元素做詞典的鍵,value 為字典所有鍵對應(yīng)的初始值唾戚。

  • 詞典名.get(key, default=None):返回指定鍵的值柳洋,如果值不在詞典中返回default值。

  • 詞典名. has_key(key):判斷鍵是否存在于詞典中叹坦,如果鍵在字典dict里返回true熊镣,否則返回false。

  • 詞典名.items():以列表返回可遍歷的(鍵, 值) 元組數(shù)組募书。

  • 詞典名.setdefault(key, default=None):返回指定鍵的值绪囱,如果值不在詞典中將會添加鍵并將值設(shè)為default值。

  • 詞典名.update(dict2):把詞典dict2的鍵/值對更新到詞典里锐膜。

  • 詞典名.pop(key[,default]):刪除字典給定鍵key及對應(yīng)的值毕箍,返回值為被刪除的值。key值必須給出道盏。否則而柑,返回default值。

  • 詞典名.popitem():返回并刪除字典中的最后一對鍵和值荷逞。如果字典已經(jīng)為空媒咳,卻調(diào)用了此方法,就報出KeyError異常种远。


4.4 意想不到的對象

4.4.1 循環(huán)對象

循環(huán)對象:包含有一個__next__()方法涩澡。這個方法的目的是生成循環(huán)的下一個結(jié)果。在生成過循環(huán)的所有結(jié)果之后坠敷,該方法將拋出StopIteration異常妙同。所有要使用的元素可以在循環(huán)過程中逐漸生成。這樣膝迎,不僅節(jié)省了空間粥帚,提高了效率,還會使編程更加靈活限次。

調(diào)用循環(huán)對象:當(dāng)一個像for這樣的循環(huán)語法調(diào)用循環(huán)對象時芒涡,它會在每次循環(huán)的時候調(diào)用 next()方法,直到StopIteration出現(xiàn)卖漫。循環(huán)接收到這個異常费尽,就會知道循環(huán)已經(jīng)結(jié)束,將停止調(diào)用next()羊始。

iter():把一個列表轉(zhuǎn)變?yōu)檠h(huán)對象旱幼。這個循環(huán)對象將擁有__next__()方法。

生成器:自定義循環(huán)對象突委。生成器的編寫方法和函數(shù)定義類似速警,只是在return的地方改為yield叹誉。生成器中可以有多個yield。當(dāng)生成器遇到一個yield時闷旧,會暫停運(yùn)行生成器,返回yield后面的值钧唐。當(dāng)再次調(diào)用生成器的時候忙灼,會從剛才暫停的地方繼續(xù)運(yùn)行,直到下一個yield钝侠。生成器自身又構(gòu)成一個循環(huán)對象该园,每次循環(huán)使用一個yield返回的值。


4.4.2 函數(shù)對象

函數(shù)對象:任何一個有call() 特殊方法的對象都被當(dāng)作是函數(shù)帅韧。


4.4.3 模塊對象

import:引入其他文件中定義的函數(shù)里初,實(shí)際上就是引入模塊對象的屬性『鲋郏可以利用對象.屬性的方式來調(diào)用模塊的方法双妨,可以拓展程序的命名空間,避免同名沖突叮阅。

模塊包:將功能相似的模塊放在同一個文件夾中刁品,構(gòu)成一個模塊包。

  • 該文件夾中必須包含一個__init__.py的文件浩姥,提醒Python挑随,該文件夾為一個模塊包。
  • __init__.py可以是一個空文件勒叠。
  • 每個模塊對象都有一個__name__屬性兜挨,用來記錄模塊的名字。

if __name__ == "__main__":如果這個文件作為一個主程序運(yùn)行眯分,那么將執(zhí)行下面的操作拌汇。 有的時候,一個.py文件中同時有類和對象的定義颗搂,以及對它們的調(diào)用担猛。當(dāng)這些.py文件作為庫引入時,我們可能并不希望執(zhí)行這些調(diào)用丢氢。通過把調(diào)用語句放到上面的if中傅联,就可以在調(diào)用時不執(zhí)行這些調(diào)用語句了。


4.4.4 異常對象

except… as…:用新的變量代表捕獲到的類型對象疚察。

代碼地址:https://gitee.com/sibyltui/learn_programming_from_python

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蒸走,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子貌嫡,更是在濱河造成了極大的恐慌比驻,老刑警劉巖该溯,帶你破解...
    沈念sama閱讀 211,496評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異别惦,居然都是意外死亡狈茉,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,187評論 3 385
  • 文/潘曉璐 我一進(jìn)店門掸掸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來氯庆,“玉大人,你說我怎么就攤上這事扰付〉棠欤” “怎么了?”我有些...
    開封第一講書人閱讀 157,091評論 0 348
  • 文/不壞的土叔 我叫張陵羽莺,是天一觀的道長实昨。 經(jīng)常有香客問我,道長盐固,這世上最難降的妖魔是什么荒给? 我笑而不...
    開封第一講書人閱讀 56,458評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮闰挡,結(jié)果婚禮上锐墙,老公的妹妹穿的比我還像新娘。我一直安慰自己长酗,他們只是感情好溪北,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,542評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著夺脾,像睡著了一般之拨。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上咧叭,一...
    開封第一講書人閱讀 49,802評論 1 290
  • 那天蚀乔,我揣著相機(jī)與錄音,去河邊找鬼菲茬。 笑死吉挣,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的婉弹。 我是一名探鬼主播睬魂,決...
    沈念sama閱讀 38,945評論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼镀赌!你這毒婦竟也來了氯哮?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,709評論 0 266
  • 序言:老撾萬榮一對情侶失蹤商佛,失蹤者是張志新(化名)和其女友劉穎喉钢,沒想到半個月后姆打,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,158評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡肠虽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,502評論 2 327
  • 正文 我和宋清朗相戀三年幔戏,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片税课。...
    茶點(diǎn)故事閱讀 38,637評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡评抚,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出伯复,到底是詐尸還是另有隱情,我是刑警寧澤邢笙,帶...
    沈念sama閱讀 34,300評論 4 329
  • 正文 年R本政府宣布啸如,位于F島的核電站,受9級特大地震影響氮惯,放射性物質(zhì)發(fā)生泄漏叮雳。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,911評論 3 313
  • 文/蒙蒙 一妇汗、第九天 我趴在偏房一處隱蔽的房頂上張望帘不。 院中可真熱鬧,春花似錦杨箭、人聲如沸寞焙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,744評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽捣郊。三九已至,卻和暖如春慈参,著一層夾襖步出監(jiān)牢的瞬間呛牲,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,982評論 1 266
  • 我被黑心中介騙來泰國打工驮配, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留娘扩,地道東北人。 一個月前我還...
    沈念sama閱讀 46,344評論 2 360
  • 正文 我出身青樓壮锻,卻偏偏與公主長得像琐旁,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子躯保,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,500評論 2 348

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