與Java一樣,Python中也存在類的概念,使用類幾乎可以模擬任何東西。 一、創(chuàng)建和使用類 我們創(chuàng)建一個簡單的學(xué)生類----它不表示特定的學(xué)生,它可以表示任何學(xué)生。對于學(xué)生,我們知道學(xué)生 擁有一個學(xué)號,這是沒有重復(fù)的,學(xué)生有名字、年齡;我們還知道學(xué)生可以有學(xué)習(xí)、運(yùn)動這些行為。 根據(jù)以上描述,我們創(chuàng)建學(xué)生類。 student.py 1 class Student(): 2 '''模擬學(xué)生''' 3 def __init__(self,name,age): 4 '''初始化name 和 age 屬性''' 5 self.name = name 6 self.age = age 7 8 def study(self): 9 '''模擬學(xué)生學(xué)習(xí)'''10 print(self.name.title() + ' is studying.')11 12 def sport(self):13 '''模擬學(xué)生運(yùn)動'''14 print(self.name.title() + ' is sports.') 解釋: 方法 __init__():類中的函數(shù)稱為方法,方法等價于函數(shù),叫法不同而已,此方法是一個特殊的方法,每當(dāng)你根據(jù)Student類創(chuàng)建新實(shí)例時,Python都會自動運(yùn)行它。在這個方法的名稱中,開頭和末尾各有兩個下劃線,這是一種約定,意在避免Python默認(rèn)方法與普通方法發(fā)生名稱沖突。 我們將方法__init__()定義包含三個形參:self、name、age。在這個方法的定義中形參self 必不可少,為何?因?yàn)镻ython在調(diào)用者方法創(chuàng)建實(shí)例時,將自動傳入實(shí)參 self。每個與類相關(guān)聯(lián)的方法都自動傳遞實(shí)參self,它是指向?qū)嵗旧淼囊?,讓?shí)例能夠訪問類中的屬性和方法。我們創(chuàng)建Student實(shí)例時,Python將調(diào)用此方法,我們將通過實(shí)參向Student() 傳遞名字和年齡;self會自動傳遞,因此我們不需要傳遞它。每當(dāng)我們根據(jù)Student類創(chuàng)建實(shí)例時,都只需要給最后兩個形參(name和age)提供值。 第5、6行代碼,定義的兩個變量都有前綴self 。以self 為前綴的變量都可供類中所有的方法使用,我們還可以通過類的任何實(shí)例來訪問這些變量。self.name = name 獲取存儲在形參name 中的值,并將其存儲到變量name 中,然后該變量被關(guān)聯(lián)到當(dāng)前創(chuàng)建的實(shí)例。self.age = age 與此類似。 Student類中還定義了其他兩個方法:study和sport。由于這些方法不需要額外的信息,因此它們只有一個形參self。 二、根據(jù)類創(chuàng)建實(shí)例 1 class Student(): 2 '''模擬學(xué)生''' 3 def __init__(self,name,age): 4 '''初始化name 和 age 屬性''' 5 self.name = name 6 self.age = age 7 8 def study(self): 9 '''模擬學(xué)生學(xué)習(xí)'''10 print(self.name.title() + ' is studying.')11 12 def sport(self):13 '''模擬學(xué)生運(yùn)動'''14 print(self.name.title() + ' is sports.')15 16 stu = Student('joker',18)17 print('stu's name is ' + stu.name)18 print('stu's age is ' + str(stu.age))19 stu.study()20 stu.sport() console: 解釋: 第16 行即創(chuàng)建Student實(shí)例,將姓名和年齡傳入,并用變量stu接收這個實(shí)例,然后可用stu訪問實(shí)例中的屬性,如17、18行,然后我們也可以調(diào)用方法,如19、20行。 可以創(chuàng)建多個實(shí)例,用不同的變量名接收即可,如: stu1 = Student('jack','19')stu2 = Student('nacy',18) 訪問其屬性和調(diào)用方法與stu 類似。
|
|