一、總體計(jì)劃:
開始時(shí)間:2022-07-13
計(jì)劃完成時(shí)間:2022-08-12
計(jì)劃每日完成量: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ū)ο缶幊淌亲钣行У能浖帉懛椒ㄖ?。在面向?qū)ο缶幊讨?,你編寫表示現(xiàn)實(shí)世界中的事物和情景的類,并基于這些類來創(chuàng)建對(duì)象。編寫類時(shí),你定義一大類對(duì)象都有的通用行為?;陬悇?chuàng)建對(duì)象時(shí),每個(gè)對(duì)象都自動(dòng)具備這種通用行為,然后可根據(jù)需要賦予每個(gè)對(duì)象獨(dú)特的個(gè)性。使用面向?qū)ο缶幊炭赡M現(xiàn)實(shí)情景,其逼真程度達(dá)到了令你驚訝的地步。根據(jù)類來創(chuàng)建對(duì)象被稱為實(shí)例化實(shí)例化 ,這讓你能夠使用類的實(shí)例。
2、創(chuàng)建Dog類,根據(jù)Dog類創(chuàng)建的每個(gè)實(shí)例都將存儲(chǔ)名字和年齡。我們賦予了每條小狗蹲下(sit() )和打滾(roll_over() )的能力。
class Dog():
"""一次模擬小狗的簡單嘗試"""
def __init__(self, name, age):
"""初始化屬性name和age"""
self.name = name
self.age = age
def sit(self):
"""模擬小狗被命令時(shí)蹲下"""
print(self.name.title() + " is now sitting.")
def roll_over(self):
"""模擬小狗被命令時(shí)打滾"""
print(self.name.title() + " rolled over!")
類中的函數(shù)稱為方法,方法_init_() 是一個(gè)特殊的方法,每當(dāng)你根據(jù)Dog 類創(chuàng)建新實(shí)例時(shí),Python都會(huì)自動(dòng)運(yùn)行它。在這個(gè)方法的名稱中,開頭和末尾各有兩個(gè)下劃線,這是一種約定,旨在避免Python默認(rèn)方法與普通方法發(fā)生名稱沖突。
我們將方法_init_() 定義成了包含三個(gè)形參:self 、name和age 。在這個(gè)方法的定義中,形參self 必不可少,還必須位于其他形參的前面。為何必須在方法定義中包含形參self 呢?因?yàn)镻ython調(diào)用這個(gè)_init_() 方法來創(chuàng)建Dog 實(shí)例時(shí),將自動(dòng)傳入實(shí)參self 。每個(gè)與類相關(guān)聯(lián)的方法調(diào)用都自動(dòng)傳遞實(shí)參self ,它是一個(gè)指向?qū)嵗旧淼囊?,讓?shí)例能夠訪問類中的屬性和方法。我們創(chuàng)建Dog 實(shí)例時(shí),Python將調(diào)用Dog 類的方法_init_() 。我們將通過實(shí)參向Dog() 傳遞名字和年齡;self 會(huì)自動(dòng)傳遞,因此我們不需要傳遞它。每當(dāng)我們根據(jù)Dog 類創(chuàng)建實(shí)例時(shí),都只需給最后兩個(gè)形參(name 和age )提供值。
3、根據(jù)類創(chuàng)建實(shí)例,我們讓Python創(chuàng)建一條名字為'willie' 、年齡為6 的小狗。遇到這行代碼時(shí),Python使用實(shí)參'willie' 和6 調(diào)用Dog 類中的方法_init_() 。方法_init_() 創(chuàng)建一個(gè)表示特定小狗的示例,并使用我們提供的值來設(shè)置屬性name 和age 。方法_init_() 并未顯式地包含return 語句,但Python自動(dòng)返回一個(gè)表示這條小狗的實(shí)例。我們將這個(gè)實(shí)例存儲(chǔ)在變量my_dog 中。在這里,命名約定很有用:我們通??梢哉J(rèn)為首字母大寫的名稱(如Dog )指的是類,而小寫的名稱(如my_dog )指的是根據(jù)類創(chuàng)建的實(shí)例。
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!