第四章 朝思暮想是對象

4.1 輕松看對象

除了面向過程的編程范式,Python還支持面向對象的編程范式。

2.類

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

需要用到:class函數

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

?????????? statement

區分屬性:①數據性:e.g. feature=True

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

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

3.對象

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

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

對對象個性的修改:

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

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

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

在引入對象的同時定義參數

self:可以在一個方法內部調用同一類的其他方法

4.2 繼承者們

1.子類

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

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

2.屬性覆蓋

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

super():一個內置類,能產生指代父類的對象。通過super,我們在子類的同名方法中調用了父類的方法。

4.3 那些年,錯過的對象

查找類的名字:type()

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

①列表對象:

pass:特殊關鍵字,用于說明,在該語法結構中“什么都不做”,保持結構完整性

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

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

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

>>>a.index(3) # 查詢元素3第一次出現時的下標

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

>>>a.sort() # 排序

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

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

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

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

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

②元組與字符串對象

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

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

>>>a.index(3) # 查詢元素3第一次出現時的下標

>>>a="abc"

>>>a.index("c")

>>>str = "Hello World!"

>>>sub = "World"

>>>str.count(sub) # 返回:sub在str中出現的次數

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

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

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

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

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

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

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

>>>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]) # 返回:去掉字符串開頭和結尾的空格。 # 也可以提供參數sub,去掉位于字符串開頭和結尾的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變為{}

4.4 意想不到的對象

①循環對象:包含有一個_next_()方法,這個方法的目的是生成循環的下一個結果。在生成過循環的所有結果之后,該方法將拋出StopIteration異常。循環接收到這個異常,就會知道循環已經結束,將停止調用__next__()。

手動循環例子:

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

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

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

>>>example_iter.__next__() # 出現StopIteration異常。

我們可以把 循環對象包裹在for中自動進行循環:

for itemin iter([1, 2]):

?print(item)

相對于序列,循環對象的好處在于:不用在循環還沒開始的時候,就生成要使用的元素。所有要使用的元素可以在循環過程中逐漸生成。這樣,不僅節省了空間,提高了效率,還會使編程更加靈活。

生成器:自定義循環對象。

②函數對象

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

class SampleMore(object):

def __call__(self, a):

return a + 5

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

print(add_five(2)) #像一個函數一樣調用函數對象,結果為7。

③模塊對象

Python中的模塊對應一個.py文件

語法:import xxx、from xxx import xxx

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

也可以用對象.屬性的方式調用。

④異常對象

try等捕捉到的程序中出現的異常。

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

?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,488評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,034評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,327評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,554評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,337評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,883評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,975評論 3 439
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,114評論 0 286
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,625評論 1 332
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,555評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,737評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,244評論 5 355
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 43,973評論 3 345
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,362評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,615評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,343評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,699評論 2 370

推薦閱讀更多精彩內容