內(nèi)容來源于網(wǎng)絡(luò),本人只是在此稍作整理,如有涉及版權(quán)問題,歸小甲魚官方所有。
練習(xí)題(來自小甲魚官方論壇)
0.對象中的屬性和方法,在編程中實(shí)際是什么?
答:變量(屬性)和函數(shù)(方法)。
1.類和對象是什么關(guān)系呢?
答:類和對象的關(guān)系就如同模具和用這個(gè)模具制作出的物品之間的關(guān)系。一個(gè)類為它的全部對象給出了一個(gè)統(tǒng)一的定義,而它的每個(gè)對象則是符合這種定義的一個(gè)實(shí)體,因此類和對象的關(guān)系就是抽象和具體的關(guān)系。
2.如果我們定義了一個(gè)貓類,那你能想象由“貓”類實(shí)例化的對象有哪些?
答:實(shí)例化就是對類的具體化,是一個(gè)真實(shí)的貓,比如加菲貓,哆啦A夢,Tom貓,或者你家養(yǎng)的那只小白貓……
3.類的定義有些時(shí)候或許不那么“擬物”,有時(shí)候會(huì)抽象一些,例如我們定義一個(gè)矩形類,那你會(huì)為此添加哪些屬性和方法呢?
答:屬性可以是長和寬,方法可以是計(jì)算周長和面積等。
4.類的屬性定義應(yīng)該盡可能抽象還是盡可能具體?
答:正確的做法是應(yīng)該盡可能的抽象,因?yàn)檫@樣更符合面向?qū)ο蟮乃季S。
5.請用一句話概括面向?qū)ο蟮膸讉€(gè)特征?
答:
封裝:對外部隱藏對象的工作細(xì)節(jié)
繼承:子類自動(dòng)共享父類之間數(shù)據(jù)和方法的機(jī)制
多態(tài):可以對不同類的對象調(diào)用相同的方法,產(chǎn)生不同的效果
6.函數(shù)和方法有什么區(qū)別?
答:函數(shù)和方法其實(shí)幾乎完全一樣,但有一點(diǎn)區(qū)別是方法默認(rèn)有一個(gè)self參數(shù),這個(gè)參數(shù)是什么意思,請聽下一講詳細(xì)分解。
編程題
0.按照以下提示嘗試定義一個(gè)Person類并生成實(shí)例對象。
屬性:姓名(默認(rèn)姓名為“小甲魚”)
方法:打印姓名
提示:方法中對屬性的引用形式需加上self,如self.name
答:代碼如下:
class Person:
name = '小甲魚'
def printName(self):
print(self.name)
1.按照以下提示嘗試定義一個(gè)矩形類并生成類實(shí)例對象。
屬性:長和寬
方法:設(shè)置長和寬 -> setRect(self),獲得長和寬 -> getRect(self),獲得面積 -> getArea(self)
提示:方法中對屬性的引用形式需加上self,如self.width
答:代碼如下:
class Rectangle:
length = 5
width = 4
def setRect(self):
print("請輸入矩形的長和寬")
self.length = float(input("長:"))
self.width = float(input("寬:"))
def getRect(self):
print("這個(gè)矩形的長是:%.2f,寬是:%.2f" % (self.length, self.width))
def getArea(self):
return self.length * self.width
2.請寫下這一節(jié)課你學(xué)習(xí)到的內(nèi)容:格式不限,回憶并復(fù)述是加強(qiáng)記憶的好方式!
- 對象:對象是人們要進(jìn)行研究的任何事物,它不僅能表示具體的事物,還能表示抽象的規(guī)則、計(jì)劃或事件。對象具有狀態(tài),一個(gè)對象用數(shù)據(jù)值來描述它的狀態(tài)。對象還有操作,用于改變對象的狀態(tài),對象及其操作就是對象的行為。對象實(shí)現(xiàn)了數(shù)據(jù)和操作的結(jié)合,使數(shù)據(jù)和操作封裝于對象的統(tǒng)一體中。
- 類:具有相同特性(數(shù)據(jù)元素)和行為(功能)的對象的抽象就是類。因此,對象的抽象是類,類的具體化就是對象,也可以說類的實(shí)例是對象,類實(shí)際上就是一種數(shù)據(jù)類型。類具有屬性,它是對象的狀態(tài)的抽象,用數(shù)據(jù)結(jié)構(gòu)來描述類的屬性。類具有操作,它是對象的行為的抽象,用操作名和實(shí)現(xiàn)該操作的方法來描述。