類是物件導向開發中必須用到的,類就是表示現實世界中的事物和情景。
零、建立類
我們使用類前,應該建立類,建立類的方式很簡單,語法如下:
class 類名稱():
類的內容
通過例子看一下,我們定義乙個cat類,類中定義乙個列印名字的方法。
# 定義乙個cat類
class
cat():
def__init__
(self,name)
:"""初始化name"""
self.name=name
defcatname
(self)
:"""列印出cat的姓名"""
print
("我的貓的名字叫%s"
% self.name)
在上面的**中方法init是乙個特殊的方法,在建立類的例項的時候,例項會自動呼叫這個方法,一般用來對例項的屬性進行初使化。另類裡面的兩個方法都有self,代表物件本身。在類中我們也看到了以self.開頭的變數(self.name),只要是在類中見到這種形式的變數,就說明該變數可以在類中的所有方法中使用,同時也可以通過類的任何例項進行使用。
一、例項化類
例項化名稱=類名稱([引數])
我們把剛才建立的類例項化,然後再呼叫其中的方法:
# 例項化cat類,傳入cate的名字
cat=cat(
"小白"
)#呼叫方法
cat.catname(
)
二、繼承
當我們定義乙個類的時候,可以從某個現有的類繼承,新的類稱為子類,而被繼承的類稱為基類、父類或超類。語法如下:
class 子類名稱(父類名稱)
: 類的內容
子類繼承了父類的所有操作,同時子類也可以有自己的方法或者重寫父類的方法。我們把前面建立的cat類作為父類,編寫乙個新的cat類:
class
chinacat
(cat)
:def
__init__
(self,name,age)
:"""增加乙個age"""
self.name=name
self.age=age
super()
.__init__(name)
defgetage
(self)
:print
("我的貓的年齡是 %s"
% self.age)
在這個新類裡我們向init方法增加了age引數,並且增加了getage方法,這些方法在cat類中是沒有的。在我們例項化chinacat類後,即可以呼叫自己本身的方法,也可以呼叫父類的方法。我們接下來看一下例子:
chinacat=chinacat(
"小花",1
)# 呼叫自己本身的方法
chinacat.getage(
)# 呼叫父類方法
chinacat.catname(
)
接下來我們再看乙個例子,我們定義乙個car類,類中定義兩個方法:startup、shutdown和carcolor,之後再定義乙個子類electriccar,子類重寫父類的carcolor方法,並定義乙個自己的方法batterypower,最後我們再呼叫這兩個類的方法。
# 定義car類
class
car():
def__init__
(self,color)
: self.color=color
defstartup
(self)
:print
('啟動引擎'
)def
shutdown
(self)
:print
('關閉引擎'
)def
carcolor
(self)
: color=self.color
print
('汽車的顏色是 %s'
% color)
# 定義子類electriccar
class
electriccar
(car)
:def
__init__
(self,color)
: self.color=color
super()
.__init__(color)
defcarcolor
(self,color=
none):
if color:
self.color=color
print
('電動汽車的顏色是 %s'
% self.color)
defbatterypower
(self,battery)
:print
('電動汽車電量還有 %d%%'
% battery)
# 呼叫car類
car=car(
'藍色'
)# 啟動汽車
car.startup(
)# 輸出汽車的顏色
car.carcolor(
)# 關閉汽車
car.shutdown(
)# 呼叫electriccar類
e_car=electriccar(
'紅色'
)# 啟動汽車
e_car.startup(
)# 輸出汽車顏色
e_car.carcolor(
)# 輸出汽車電量,每次減去10%的電量
battery=
100e_car.batterypower(battery)
for i in
range
(100,-
10,-10
):battery=i
e_car.batterypower(battery)
if i==0:
print
('電量用完了!'
)# 關閉引擎
e_car.shutdown(
)# 定義乙個新的電動汽車例項
new_e_car=electriccar(
'白色'
)new_e_car.carcolor(
'黑色'
)
我們看到electriccar類重寫了父類的carcolor方法,增加了顏色的設定,並將形參預設值設為none,方法體中的**通過判斷color是否為none來決定是否使用例項化類的時候傳入的顏色。
在某些情況我們不希望子類呼叫父類的某些方法,這時我們就可以定義以__開頭的方法,這樣的方法被稱為私有方法,父類的私有方法在子類的例項中是無法呼叫。我們看一下例子:
class
classa()
:def
__init__
(self)
:pass
def__myclassa
(self)
:print
('class a'
)class
classb
(classa)
:def
__init__
(self)
:super()
.__init__(
)def
myclassb
(self)
:print
('class b'
)# 例項化classb
b=classb(
)# 呼叫classb的方法
b.myclassb(
)# 呼叫classad的方法,將會報錯
b.__myclassa(
)
三、匯入
和函式類似,我們也可以將類儲存進py檔案中,我們習慣上會將類及其子類放在同乙個py檔案中。當在另乙個檔案中需要使用某乙個類時,只需要匯入這個類即可,匯入的語法和函式一樣。
四、小結
本節我們講的比較多,這節是本教程的重中之重,無比記牢類的用法。本節課的內容我將會在這個系列的教程講完後,在《物件導向程式設計》中進一步講解。
五、作業
定義乙個動物類,類中包含三個方法,分別執行:發出叫聲、輸出動物腿的數量和動物尾巴數量;
例項化上面定義的類;
將1中的類作為父類,擴充套件出幾個動物的子類,並重寫父類中的乙個或幾個方法,根據每種動物的特點擴充套件出各自獨有的方法;
將父類的某個方法設為私有。
第四章 第二節 類
類是物件導向開發中必須用到的,類就是表示現實世界中的事物和情景。零 建立類 我們使用類前,應該建立類,建立類的方式很簡單,語法如下 class 類名稱 類的內容通過例子看一下,我們定義乙個cat類,類中定義乙個列印名字的方法。定義乙個cat類 class cat def init self,name...
python小白之路 第四章資料型別第二節列表
重點記憶 返回列表元素個數。varl 1 2,3 print len varl 3返回列表元素中的最大值。varl 1 2,3 print max varl 3返回列表元素中的最小值。varl 1 2,3 print min varl 1重點記憶 用於將元組或字串轉換為列表。str 123 vart...
第四章 4 9節練習
練習4.28 寫一段程式,輸出每一種內建型別所佔空間的大小。解答 這裡可以用sizeof來輸出你想得到的型別的大小。練習4.29 推斷下面 的輸出結果並說明理由。實際執行這段程式,結果和你想象的一樣嗎?如果不一樣,為什麼?int x 10 int p x cout sizeof x sizeof x...