2020年9月16日星期三

[課後作業] 第036講:類和對象:給大家介紹對象|課後測試題及答案

[課後作業] 第036講:類和對象:給大家介紹對象|課後測試題及答案




《零基礎入門學習Python》視頻下載地址:傳送門DIuY#^!K8H
+LIHi]kfFh_Q^#:)sB%A
測試題:版權屬於:bbs.fishc.com
:F#R,|Ed.P+ M9bBC]"@KUwkWA-(pXH
0.對像中的屬性和方法,在編程中實際是什麼?c#,T>Q
b&6I%",L+ZFSh8'~kGJ[=
}$ty*IM%+aX# NS0G_>:`gjP2EDWf
1.類和對像是什麼關係呢?版權屬於:bbs.fishc.com
Rrz7oIDE+=Cwf'mZ]:ljx
^:y`8ra) ]fHim4X*FwG02?Rg%
2.如果我們定義了一個貓類,那你能想像出由“貓”類實例化的對像有哪些?WM&"ZkdUN5
!A &[%GF{H~Jj^Z,z'(+?wVMn
w6yjd[7Q#h9|v2qBmuGF)x>XDV( W
3.類的定義有些時候或許不那麼“擬物”,有時候會抽像一些,例如我們定義一個矩形類,那你會為此添加哪些屬性和方法呢?0b} <&8

YsSjc3`]Q t>zp&JD1U^EZGmKn
p'Ylt9;[wkPH3(jO R%}> sM
4. 類的屬性定義應該盡可能抽像還是盡可能具體?
yJ)xhwB=
mWkC}RLH+6:X^7le')0A?O=QG
f<yN1#sD(^&QJ`]eG4B;@A
5.請用一句話概括面向對象的幾個特徵?thb) G
SMcdv*`"@N2nZJ-Bpmr3:Q)[R
封裝
繼承
多態

h@Alkjm~I#:UuL$sSv)?}yCx
6.函數和方法有什麼區別?來自:bbs.fishc.com
pdX56Wx8 _oViN=l}m`'@S-$9.CE*K
y.tKgm>9@uAH1a-jRceofNrY
動動手:
RZH|?1h"C ]wxa #Itfv{Kc
0.按照以下提示嘗試定義一個Person類並生成類實例對象。&`ApJgx
l;[yx B,eqo~a$NtG+]E
屬性:姓名(默認姓名為“小甲魚”)Powered by bbs.fishc.com
方法:打印姓名Powered by bbs.fishc.com
提示:方法中對屬性的引用形式需加上self,如self.name g7ue`OKpb
8"AEYr%[lu#6anBp}ycdbh5H`3{ 72]
=C8~<S$Ia> +MkmV5?'39z
1.按照以下提示嘗試定義一個矩形類並生成類實例對象。6}:Xht
cEb8{C6^[~D<pX3gMk_tUw?+n1m
屬性:長和寬版權屬於:bbs.fishc.com
方法:設置長和寬-> setRect(self),獲得長和寬-> getRect(self),獲得面積-> getArea(self) =Y]zAj+Tb_
提示:方法中對屬性的引用形式需加上self,如self.width 'xduZ=F?
D3< &)U^}Jc_]Es8VfX|IvQFo
程序截圖:版權屬於:bbs.fishc.com
Qa;=o8_C5,{c<>Ngwin)"fr

k';P|<^4MprJeQ=?*D-@9]&
p3`;J8^Hr{YX=RBTGIe|
2.請寫下這一節課你學習到的內容:格式不限,回憶並複述是加強記憶的好方式!

回复您的答案即可查看參考答案!]WT$sj
muPpE)GcFqh,Y7;&fR}QMO
$_ns,Zc"NWfRa5{e0x}1I
測試題答案:

本帖隱藏的內容

來自:bbs.fishc.com
0.對像中的屬性和方法,在編程中實際是什麼?X]5U*
Qj*dTr}]){;>h6v,'=5w4@%xpRka
答:變量(屬性)和函數(方法)。來自:bbs.fishc.com
x#Lr`0vQ4NqR?~YZ}:{6!u|
K![m@"L~XQg,-{2'U?lj%&WD|
1.類和對像是什麼關係呢?<]lw*
TVW <Nago(LEJRp`X&Ki6
答:類和對象的關係就如同模具和用這個模具製作出的物品之間的關係。一個類為它的全部對像給出了一個統一的定義,而他的每個對象則是符合這種定義的一個實體,因此類和對象的關係就是抽象和具體的關係。c1|.98
D$~?([1VqYSdk)'}p,^g3rm<azX
rxB6WvGS{'2lu9[)Mw&X>(
2.如果我們定義了一個貓類,那你能想像出由“貓”類實例化的對像有哪些?ur)"D1l#
QxJ+LI5=WS(}24Kza; >HZ9
答:叮噹貓,咖啡貓,Tom(Tom&Jerry),Kitty(Hello Kitty)…… *DhjwKO
1_4Yea}Tr>=*%`ZuUd#?H"w3I0jX'F
|[oB)JvraMLkP=e'
3.類的定義有些時候或許不那麼“擬物”,有時候會抽像一些,例如我們定義一個矩形類,那你會為此添加哪些屬性和方法呢?Y=s|&
m)u!yeV]63;[`WXTsfMgl*7<+&1@%
答:屬性可以是長和寬,方法可以是計算周長、面積等。I:f'FZPnx
&Be%S6Ig]oGnY }+xiK8U-)l'P
E%6RLM.uf* _FPedj@Y)5#13-l
4.類的屬性定義應該盡可能抽像還是盡可能具體?!c3nX;U(p
ZEXjPBrHxl;o<K4pvt})kRUaL01s
答:正確的做法是應該盡可能的抽象,因為這樣更符合面向對象的思維。0)M>9t
Yz=m|(qxi_d>P!By@FC:X+{nGZk?E
1@b)~"hHn9!7Y=upJW%SO
5.請用一句話概括面向對象的幾個特徵?x<YQ|dBIqT
Gja wt%zyDu{k^ex8&FM5#rAW.-7O
封裝對外部隱藏對象的工作細節
繼承子類自動共享父類之間數據和方法的機制
多態可以對不同類的對象調用相同的方法,產生不同的結果

3kH:b%Cd$a?|go@{n1yw-]&
6.函數和方法有什麼區別?V{>t
q,=?L*3Z1l"]2` .cwWCX_5:;
答:細心的童鞋會發現,方法跟函數其實幾乎完全一樣,但有一點區別是方法默認有一個self參數,這個參數是什麼意思?請聽下一講詳細分解。V^|{o70xy

版權屬於:bbs.fishc.com
4'J,wYv1IG:Dm{a8E=ScZK_"ns
動動手答案:版權屬於:bbs.fishc.com

本帖隱藏的內容

版權屬於:bbs.fishc.com
0.按照以下提示嘗試定義一個Person類並生成類實例對象。KGOJg
VyaSj4h'-!iq+b@C}t#Qd5,2[fcMD%
屬性:姓名(默認姓名為“小甲魚”)版權屬於:bbs.fishc.com
方法:打印姓名版權屬於:bbs.fishc. com
提示:方法中對屬性的引用形式需加上self,如self.name ([*JRD WxQ
Z~,+Iy_OX lt':pW;Ck{)|jS9sdT
代碼清單:
  1. class Person:
  2.     name = '小甲魚'
  3.    
  4.     def printName(self):
  5.        print(self.name)
複製代碼

(U3C1%qI2+@~Yrt^kcWzsgeB
1.按照以下提示嘗試定義一個矩形類並生成類實例對象。Hb8|-FmE&
Km_4d);u9.f=PlYqjZX7GvMir:<0+
屬性:長和寬版權屬於:bbs .fishc.com
方法:設置長和寬-> setRect(self),獲得長和寬-> getRect(self),獲得面積-> getArea(self) )nua=4L
提示:方法中對屬性的引用形式需加上self,如self.width %?W<CRK
Zq1DdLagJ+[CxvRS"8N!
代碼清單:
  1. class Rectangle:
  2.     length = 5
  3.     width = 4
  4.    
  5.     def setRect(self):
  6.         print("請輸入矩形的長和寬...")
  7.         self.length = float(input('長:'))
  8.         self.width = float(input('寬:'))

  9.     def getRect(self):
  10.         print('這個矩形的長是:%.2f,寬是:%.2f' % (self.length, self.width))
  11.         
  12.     def getArea(self):
  13.         return self.length * self.width
複製代碼

2.請寫下這一節課你學習到的內容:格式不限,回憶並複述是加強記憶的好方式!

小甲魚希望你認真對待作業就像你希望小甲魚推出高質量視頻一樣渴望^_^



(一)對象

這節課給大家介紹對象。我們之前說過Python無處不對象,Python到處都是對象,然而我們很多人不理解對像到底是什麼?他們只是在學習的時候有聽過面向對象編程這麼一回事,但是他們仍然在使用對象。
對像是模擬真實世界,把數據和代碼都封裝在一起。
下面是關於類的一個簡單的例子:
  1. class Turtle: #Python中的类名约定以大写字母开头
  2. "-----关于类的一个简单例子----"
  3. #属性
  4. color = 'green'
  5. weight = 10
  6. legs = 4
  7. shell = True
  8. mouth = '大嘴'
  9. #方法
  10. def climb(self):
  11. print('我正在努力地向前爬.......')
  12. def run(self):
  13. print('我正在努力地向前爬.......')
  14. def bite(self):
  15. print('咬死你咬死你!!!')
  16. def eat(self):
  17. print('有吃的,真满足^_^')
  18. def sleep(self):
  19. print('累了,困了,睡觉了zzzzz')
上面的語句就定​​義好了一個類。
tt = Turtle()    #实例化一个类对象
調用類和調用函數相同,Python的類名以大寫字母開頭,函數以小寫字母開頭,方便區分。
這裡實例化了一個對象,並用tt 這個變量給指過去,下面的語句用於調用對象裡的方法:
  1. >>> tt.climb()
  2. 我正在努力地向前爬.......
  3. >>> tt.bite()
  4. 咬死你咬死你!!!
(二)面向對象的特徵
OO = Object Oriented(面向對象)
Python就是一門純粹的面向對象編程的語言,面向對象編程有什麼特徵呢?
  • 第一個特徵就是封裝
表面上看,對象封裝了屬性(也就是變量)和方法(也就是函數),成為了一個獨立性很強的模塊,封裝更是一種信息隱蔽技術,使得我們的數據更加安全,舉例說明:
Python的列表實際上就是一個對象,它提供了若干種方法供我們根據需求來調整整個列表,但是我們知道列表對象裡邊的這些方法是如何實現的嗎?我們不知道。我們也不知道列表對象裡有哪些變量。這就是所謂的封裝,它封裝起來,只給我們需要的方法的名字,然後我們調用這個名字,知道它可以實現就OK了。但是不會告訴我們具體的實現過程。
  • 第二個特徵就是繼承
繼承是子類自動共享父類之間數據和方法的機制。
定義子類的方法為:class 子類名(父類名):
  1. >>> class Mylist(list):
  2. pass
  3. >>> list1 = Mylist()
  4. >>> list1.append(5)
  5. >>> list1.append(3)
  6. >>> list1.append(7)
  7. >>> list1
  8. [5, 3, 7]
  9. >>> list1.sort()
  10. >>> list1
  11. [3, 5, 7]
這裡我們自定義一個list 的子類Mylist,我們發現子類Mylist 也能調用父類list 的方法。
  • 第三個特徵就是多態
多態的概念是不同對像對同一方法響應不同的行動。
  1. >>> class A:
  2. def fun(self):
  3. print('我是小A')
  4. >>> class B:
  5. def fun(self):
  6. print('我是小B')
  7. >>> a = A()
  8. >>> b = B()
  9. >>> a.fun()
  10. 我是小A
  11. >>> b.fun()
  12. 我是小B

0 留言:

發佈留言