第四章 朝思暮想是對象

4.1 輕松看對象

除了面向過程的編程范式僧凰,Python還支持面向?qū)ο蟮木幊谭妒健?/p>

2.類

把相近的東西歸為一類贸典,而且給這個類起一個名字。

需要用到:class函數(shù)

用法:class 類名(對象類別)

?????????? statement

區(qū)分屬性:①數(shù)據(jù)性:e.g. feature=True

????????????????? ②行為:e.g. def (行為名)(self,參數(shù))

??????????????????????????????? statement

3.對象

定義:對象是類的實例:summer=Bird()

對屬性的引用:對象.屬性:summer.chirp("jijiji")

對對象個性的修改:

①通過行為和self:def set_color(self,color)

??????? ?????????????????????????????self.color=color(給定的參數(shù))

②特殊方法:_init_()、_add_().....(在方法名前后加兩個下劃線)

在引入對象的同時定義參數(shù)

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

4.2 繼承者們

1.子類

①子類:擁有父類的所有屬性一罩,同時可定義子類的特有屬性,還可替換撇簿。

②繼承:子類擁有父類的所有屬性聂渊。

2.屬性覆蓋

使用同名屬性名,父類的屬性會被子類覆蓋四瘫。

super():一個內(nèi)置類汉嗽,能產(chǎn)生指代父類的對象。通過super找蜜,我們在子類的同名方法中調(diào)用了父類的方法饼暑。

4.3 那些年,錯過的對象

查找類的名字:type()

查詢類的屬性:dir()、help()

①列表對象:

pass:特殊關(guān)鍵字弓叛,用于說明彰居,在該語法結(jié)構(gòu)中“什么都不做”,保持結(jié)構(gòu)完整性

我們看到類還有許多“隱藏技能”撰筷。比如下面一些list的方法陈惰,可以返回列表的信息:

>>>a = [1, 2, 3, 5, 9.0, "Good", -1, True, False, "Bye"]

>>>a.count(5) # 計數(shù),看總共有多少個元素5

>>>a.index(3) # 查詢元素3第一次出現(xiàn)時的下標(biāo)

>>>a.append(6) # 在列表的最后增添一個新元素6

>>>a.sort() # 排序

>>>a.reverse() # 顛倒次序

>>>a.pop() # 去除最后一個元素闭专,并將該元素返回奴潘。

>>>a.remove(2) # 去除第一次出現(xiàn)的元素2

>>>a.insert(0,9) # 在下標(biāo)為0的位置插入9

>>>a.clear() # 清空列表

②元組與字符串對象

>>>a = (1, 3, 5)

>>>a.count(5) # 計數(shù),看總共有多少個元素5

>>>a.index(3) # 查詢元素3第一次出現(xiàn)時的下標(biāo)

>>>a="abc"

>>>a.index("c")

>>>str = "Hello World!"

>>>sub = "World"

>>>str.count(sub) # 返回:sub在str中出現(xiàn)的次數(shù)

>>>str.find(sub) # 返回:從左開始影钉,查找sub在str中第一次出現(xiàn)的位置画髓。 #如果str中不包含sub,返回 -1

>>>str.index(sub) # 返回:從左開始平委,查找sub在str中第一次出現(xiàn)的位置奈虾。 #如果str中不包含sub,舉出錯誤

>>>str.rfind(sub) # 返回:從右開始廉赔,查找sub在str中第一次出現(xiàn)的位置 #如果str中不包含sub肉微,返回 -1

>>>str.rindex(sub) # 返回:從右開始,查找sub在str中第一次出現(xiàn)的位置 # 如果str中不包含sub蜡塌,舉出錯誤

>>>str.isalnum() # 返回:True碉纳,如果所有的字符都是字母或數(shù)字

>>>str.isalpha() # 返回:True,如果所有的字符都是字母

>>>str.isdigit() # 返回:True馏艾,如果所有的字符都是數(shù)字

>>>str.istitle() # 返回:True劳曹,如果所有的詞的首字母都是大寫


>>>str.isspace() # 返回:True,如果所有的字符都是空格

>>>str.islower() # 返回:True琅摩,如果所有的字符都是小寫字母

>>>str.isupper() # 返回:True铁孵,如果所有的字符都是大寫字母

>>>str.split([sep, [max]]) # 返回:從左開始,以空格為分隔符(separator)房资,# 將str分 割為多個子字符串蜕劝,總共分割max次。# 將所得的子字符串放在一個表中返回轰异♂妫可以以 # str.split(",")的方式使用其他分隔符

>>>str.rsplit([sep, [max]]) # 返回:從右開始,以空格為分隔符(separator)搭独,# 將str分 割為多個子字符串烫止,總共分割max次。# 將所得的子字符串放在一個表中返回戳稽」萑洌可以以 # str.rsplit(",")的方式使用其他分隔符

?>>>str.join(s) # 返回:將s中的元素期升,以str為分隔符, # 合并成為一個字符串互躬。

>>>str.strip([sub]) # 返回:去掉字符串開頭和結(jié)尾的空格播赁。 # 也可以提供參數(shù)sub,去掉位于字符串開頭和結(jié)尾的sub

>>>str.replace(sub, new_sub) # 返回:用一個新的字符串new_sub替換str中 # 的sub

>>>str.capitalize() # 返回:將str第一個字母大寫

>>>str.lower() # 返回:將str全部字母改為小寫

>>>str.upper() # 返回:將str全部字母改為大寫

>>>str.swapcase() # 返回:將str大寫字母改為小寫吼渡,小寫字母改為大寫

>>>str.title() # 返回:將str的每個詞(以空格分隔)的首字母# 大寫

>>>str.center(width) # 返回:長度為width的字符串容为,將原字符串放入# 該字符串中 心,其他空余位置為空格寺酪。

>>>str.ljust(width) # 返回:長度為width的字符串坎背,將原字符串左對# 齊放入該字符串,其 他空余位置為空格寄雀。

>>>str.rjust(width) # 返回:長度為width的字符串得滤,將原字符串右對齊放入# 該字符串,其 他空余位置為空格盒犹。

③詞典對象

for k in example_dict.keys():

print(example_dict[k])

for v in example_dict.values():

????????? print(v)

for k,v in example_dict.items():

????????? print(k, v)

用clear()方法懂更,清空整個詞典:

example_dict.clear() # 清空example_dict,example_dict變?yōu)閧}

4.4 意想不到的對象

①循環(huán)對象:包含有一個_next_()方法急膀,這個方法的目的是生成循環(huán)的下一個結(jié)果沮协。在生成過循環(huán)的所有結(jié)果之后,該方法將拋出StopIteration異常卓嫂。循環(huán)接收到這個異常慷暂,就會知道循環(huán)已經(jīng)結(jié)束,將停止調(diào)用__next__()晨雳。

手動循環(huán)例子:

>>>example_iter = iter([1, 2])

?>>>example_iter.__next__() # 顯示1

>>>example_iter.__next__() # 顯示2

>>>example_iter.__next__() # 出現(xiàn)StopIteration異常行瑞。

我們可以把 循環(huán)對象包裹在for中自動進(jìn)行循環(huán):

for itemin iter([1, 2]):

?print(item)

相對于序列,循環(huán)對象的好處在于:不用在循環(huán)還沒開始的時候悍募,就生成要使用的元素。所有要使用的元素可以在循環(huán)過程中逐漸生成洋机。這樣坠宴,不僅節(jié)省了空間,提高了效率绷旗,還會使編程更加靈活喜鼓。

生成器:自定義循環(huán)對象。

②函數(shù)對象

任何一個有_call_()特殊方法的對象:

class SampleMore(object):

def __call__(self, a):

return a + 5

add_five = SampleMore() # 生成函數(shù)對象

print(add_five(2)) #像一個函數(shù)一樣調(diào)用函數(shù)對象衔肢,結(jié)果為7庄岖。

③模塊對象

Python中的模塊對應(yīng)一個.py文件

語法:import xxx、from xxx import xxx

引入模塊的所有屬性:from xxx import *

也可以用對象.屬性的方式調(diào)用角骤。

④異常對象

try等捕捉到的程序中出現(xiàn)的異常隅忿。

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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市背桐,隨后出現(xiàn)的幾起案子优烧,更是在濱河造成了極大的恐慌,老刑警劉巖链峭,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件畦娄,死亡現(xiàn)場離奇詭異,居然都是意外死亡弊仪,警方通過查閱死者的電腦和手機(jī)熙卡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來励饵,“玉大人驳癌,你說我怎么就攤上這事∏幔” “怎么了喂柒?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長禾嫉。 經(jīng)常有香客問我灾杰,道長,這世上最難降的妖魔是什么熙参? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任艳吠,我火速辦了婚禮,結(jié)果婚禮上孽椰,老公的妹妹穿的比我還像新娘昭娩。我一直安慰自己,他們只是感情好黍匾,可當(dāng)我...
    茶點故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布栏渺。 她就那樣靜靜地躺著,像睡著了一般锐涯。 火紅的嫁衣襯著肌膚如雪磕诊。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天纹腌,我揣著相機(jī)與錄音霎终,去河邊找鬼。 笑死升薯,一個胖子當(dāng)著我的面吹牛莱褒,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播涎劈,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼广凸,長吁一口氣:“原來是場噩夢啊……” “哼阅茶!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起炮障,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤目派,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后胁赢,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體企蹭,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年智末,在試婚紗的時候發(fā)現(xiàn)自己被綠了谅摄。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡系馆,死狀恐怖送漠,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情由蘑,我是刑警寧澤闽寡,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站尼酿,受9級特大地震影響爷狈,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜裳擎,卻給世界環(huán)境...
    茶點故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一涎永、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧鹿响,春花似錦羡微、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至绸贡,卻和暖如春盯蝴,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背恃轩。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工结洼, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留黎做,地道東北人叉跛。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像蒸殿,于是被迫代替她去往敵國和親筷厘。 傳聞我的和親對象是個殘疾皇子鸣峭,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,933評論 2 355

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