python基礎知識——類
阿新 • • 發佈:2021-07-22
1. 建立類和例項
- 在python中,首字母大寫的名稱指的是類
- 方法__init__()中,self必不可少,還必須位於其他形參前面,此方法的名稱中,開頭和末尾各有兩個下劃線
- 每當根據類建立新例項時,python都會自動執行__init__(),雖然方法__init__()並未顯式地包含return語句,但python自動返回一個當前類的例項,儲存在變數my_dog中
- 建立例項後,可以使用句點表示法來呼叫類的屬性和方法
-
class Dog(): '''一次模擬小狗的簡單嘗試''' def __init__(self, name, age): '''初始化屬性name和age
執行結果
My dag is 6 years old. Willie is now sitting. Willie rolled over!
2. 使用類和例項
2.1 給屬性指定預設值
- 設定預設值時,可以在方法__init__()中指定屬性的初始值,此時無需包含為它提供初始值的形參
-
class Car(): '''一次模擬汽車的簡單嘗試''' def __init__(self, make, model, year): '''初始化描述汽車的屬性''' self.make
2.2 修改屬性的值
- 直接修改屬性的值,如my_car.odometer = 23
- 通過方法修改屬性的值,在類的定義中加上如下函式
-
def update_odometer(self, mileage): '''將里程錶讀數設定為指定的值''' self.odometer = mileage
呼叫時
my_car.update_odometer(23) my_car.read_odometer()
-
- 通過方法對屬性的值進行遞增,在類的定義中加上如下函式
-
def increment_odometer(self, miles): '''將里程錶讀數增加指定的量''' self.odometer += miles
呼叫時
my_car.increment_odometer(200) my_car.read_odometer()
-
3. 繼承
- 一個類繼承另一個類時,它將自動獲得另一個類的所有屬性和方法
- 原有的類稱為父類,新類稱為子類。子類繼承了其父類的所有屬性和方法,同時還可以定義自己的屬性和方法
-
1 class Car(): 2 '''汽車''' 3 4 def __init__(self, make, model, year): 5 '''初始化描述汽車的屬性''' 6 self.make = make 7 self.model = model 8 self.year = year 9 self.odometer = 0 10 11 def read_odometer(self): 12 '''列印一條指出汽車裡程的訊息''' 13 print("This car has " + str(self.odometer) + " miles on it.") 14 15 def get_name(self): 16 long_name = str(self.year) + ' ' + self.make + ' ' + self.model 17 return long_name.title() 18 19 class ElectricCar(Car): 20 '''電動汽車''' 21 22 def __init__(self, make, model, year): 23 '''初始化父類的屬性''' 24 super().__init__(make, model, year) 25 26 my_car = ElectricCar('tesla', 'model s', 2016) 27 print(my_car.get_name())
執行結果
2016 Tesla Model S
- 建立子類時,父類必須包含在當前檔案中,且位於子類前面
- 定義子類時,必須在括號內指定父類的名稱
- 第24行中的super()是一個特殊函式,幫助python將父類和子類關聯起來,這行程式碼讓python呼叫父類的方法__init__()
- 對於父類的方法,子類都可對其進行重寫,為此,可在子類中定義一個這樣的方法,即它與要重寫的父類方法同名
- 將例項用作屬性
-
1 class Battery(): 2 '''電動汽車的電瓶''' 3 4 def __init__(self, battery = 70): 5 '''初始化電瓶的屬性''' 6 self.battery = battery 7 8 def describe_battery(self): 9 '''列印一條描述電瓶容量的訊息''' 10 print("This car has a " + str(self.battery) + "-KWh battery.") 11 12 class ElectricCar(Car): 13 '''電動汽車''' 14 15 def __init__(self, make, model, year): 16 '''初始化父類的屬性''' 17 super().__init__(make, model, year) 18 self.battery = Battery() 19 20 my_car = ElectricCar('tesla', 'model s', 2016) 21 print(my_car.get_name()) 22 23 my_car.battery.describe_battery()
執行結果
This car has a 70-KWh battery.
- 在ElectricCar類前定義了一個名為Battery的新類
- 在ElectricCar類中,添加了一個名為self.battery的屬性,這行程式碼讓python建立一個新的Battery例項,並將該例項儲存在屬性self.battery中
- 現在每個ElectricCar例項都包含一個自動建立的Battery例項
- 第23行呼叫了Battery方法
4. 匯入類
- 為使檔案儘可能簡潔,可以將類儲存在模組中,然後在主程式中匯入所需的模組
4.1 匯入單個類
- 通用語法為:from 模組檔名 import 類名
- 在使用類時可直接像前面那樣使用
- 可以根據需要在一個模組中儲存任意數量的類
4.2 從一個模組中匯入多個類
- 可以根據需要在程式檔案中匯入任意數量的類
- 匯入多個類時,使用逗號分隔各類
4.3 匯入整個模組
-
import car my_beetle = car.Car('volkswagen', 'beetle', 2016) my_tesla = car.ElectricCar('tesla', 'roadster', 2016)
4.4 匯入模組中的所有類
- 通用語法為:from module_name import *
- 但不推薦使用此種方法,若需要從一個模組中匯入很多類時,最好匯入整個模組
5. python標準庫
- python標準庫是一組模組
- 比如模組collections中的一個類——OrderedDict,它可以建立字典並記錄其中的鍵值對新增順序。OrderedDict例項的行為幾乎與字典相同,區別只在於記錄了鍵值對的新增順序
-
from collections import OrderedDict languages = OrderedDict() languages['jen'] = 'python' languages['sarah'] = 'c' languages['edward'] = 'ruby' for name, language in languages.items(): print(name.title() + "'s favorite language is " + language.title() + ".")
執行結果
Jen's favorite language is Python. Sarah's favorite language is C. Edward's favorite language is Ruby.
6. 類編碼風格
- 類名應採用駝峰命名法:類名中的每個單詞首字母都大寫,不使用下劃線
- 例項名和模組名都採用小寫格式,並在單詞之間加下劃線
- 在類中,可使用一個空行來分隔方法;在模組中,可使用兩個空行來分隔類
- 需要同時匯入標準庫中的模組和你編寫的模組時,先編寫匯入標準庫模組的import語句,再新增一個空行,然後編寫匯入你自己編寫的模組的import語句