第四章 朝思暮想是對象

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)時的下標

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

>>>a.sort() # 排序

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

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

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

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

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

②元組與字符串對象

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

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

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

>>>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中自動進行循環(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)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容