一、總體計劃:
開始時間:2022-07-13
計劃完成時間:2022-08-12
計劃每日完成量:15頁/天灿里,或0.7章/天
二舶沿、今日(2022-07-25)學(xué)習(xí)進(jìn)度:
今日已學(xué)習(xí)25頁鼓寺,完成1章,日任務(wù)達(dá)標(biāo)贤壁。
總體進(jìn)度256頁/460頁,13章/20章埠忘。
三脾拆、學(xué)習(xí)筆記:
1、類莹妒,面向?qū)ο缶幊淌亲钣行У能浖帉懛椒ㄖ患偕ァT诿嫦驅(qū)ο缶幊讨校憔帉懕硎粳F(xiàn)實世界中的事物和情景的類动羽,并基于這些類來創(chuàng)建對象包帚。編寫類時,你定義一大類對象都有的通用行為运吓】拾睿基于類創(chuàng)建對象時,每個對象都自動具備這種通用行為拘哨,然后可根據(jù)需要賦予每個對象獨特的個性谋梭。使用面向?qū)ο缶幊炭赡M現(xiàn)實情景,其逼真程度達(dá)到了令你驚訝的地步倦青。根據(jù)類來創(chuàng)建對象被稱為實例化實例化 瓮床,這讓你能夠使用類的實例。
2、創(chuàng)建Dog類隘庄,根據(jù)Dog類創(chuàng)建的每個實例都將存儲名字和年齡踢步。我們賦予了每條小狗蹲下(sit() )和打滾(roll_over() )的能力。
class Dog():
"""一次模擬小狗的簡單嘗試"""
def __init__(self, name, age):
"""初始化屬性name和age"""
self.name = name
self.age = age
def sit(self):
"""模擬小狗被命令時蹲下"""
print(self.name.title() + " is now sitting.")
def roll_over(self):
"""模擬小狗被命令時打滾"""
print(self.name.title() + " rolled over!")
類中的函數(shù)稱為方法丑掺,方法_init_() 是一個特殊的方法获印,每當(dāng)你根據(jù)Dog 類創(chuàng)建新實例時,Python都會自動運行它街州。在這個方法的名稱中兼丰,開頭和末尾各有兩個下劃線,這是一種約定唆缴,旨在避免Python默認(rèn)方法與普通方法發(fā)生名稱沖突鳍征。
我們將方法_init_() 定義成了包含三個形參:self 、name和age 面徽。在這個方法的定義中蟆技,形參self 必不可少,還必須位于其他形參的前面斗忌。為何必須在方法定義中包含形參self 呢质礼?因為Python調(diào)用這個_init_() 方法來創(chuàng)建Dog 實例時,將自動傳入實參self 织阳。每個與類相關(guān)聯(lián)的方法調(diào)用都自動傳遞實參self 眶蕉,它是一個指向?qū)嵗旧淼囊茫寣嵗軌蛟L問類中的屬性和方法唧躲。我們創(chuàng)建Dog 實例時造挽,Python將調(diào)用Dog 類的方法_init_() 。我們將通過實參向Dog() 傳遞名字和年齡弄痹;self 會自動傳遞饭入,因此我們不需要傳遞它。每當(dāng)我們根據(jù)Dog 類創(chuàng)建實例時肛真,都只需給最后兩個形參(name 和age )提供值谐丢。
3、根據(jù)類創(chuàng)建實例蚓让,我們讓Python創(chuàng)建一條名字為'willie' 乾忱、年齡為6 的小狗。遇到這行代碼時历极,Python使用實參'willie' 和6 調(diào)用Dog 類中的方法_init_() 窄瘟。方法_init_() 創(chuàng)建一個表示特定小狗的示例,并使用我們提供的值來設(shè)置屬性name 和age 趟卸。方法_init_() 并未顯式地包含return 語句蹄葱,但Python自動返回一個表示這條小狗的實例氏义。我們將這個實例存儲在變量my_dog 中。在這里图云,命名約定很有用:我們通彻哂疲可以認(rèn)為首字母大寫的名稱(如Dog )指的是類,而小寫的名稱(如my_dog )指的是根據(jù)類創(chuàng)建的實例琼稻。
my_dog = Dog('willie', 6)
print("My dog's name is " + my_dog.name.title() + ".")
print("My dog is " + str(my_dog.age) + " years old.")
my_dog.sit()
my_dog.roll_over()
輸出結(jié)果:
My dog's name is Willie.
My dog is 6 years old.
Willie is now sitting.
Willie rolled over!