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…:用新的變量代表捕獲到的類型對象心剥。