對於Python新手來說,寫代碼很少考慮代碼的效率和簡潔性,因此容易造成代碼冗長、執行慢,這些都是需要改進的地方。本文是想通過幾個案列給新手一點啟發,怎樣寫python代碼更優雅。 大坑一:不喜歡使用高級數據結構 1.sets(集合) 很多新手忽視sets(集合)和tuple(元組)的強大之處 例如 ...
6.2 類和類的定義
面向對象最重要的概念就是類(Class)和實例(Instance),必須牢記類是抽象的模板,比如學生類,而實例是根據類創建出來的一個個具體的對象
,每個對象都擁有相同的方法,但各自的數據可能不同。
6.2.1 什麼是類
當你在馬路上看到一輛飛馳的奧迪汽車時,這輛奧迪車就是汽車類
的一個實例。汽車就是一個類,每輛車都是汽車類的一個實例。
可以將類
理解為工廠製造汽車的設計圖,通過這個設計圖可以持續的造(實例化)不同的汽車。
類一般都具有屬性和方法,在汽車類
中,屬性可以是汽車的車身顏色,方法可以是前進、剎車等。
人也是一種類
,稱為人“類”。張三、李四、王五都是人“類”的實例化。類
由屬性和方法組成。屬性是屬於類
的變數,比如在人“類”中,屬性可以包括姓名、性別、年齡等。而方法是存儲在類
中的函數(操作、動作)。比如:吃飯、睡覺、走路等。
6.2.2 創建類
上面講了這麼多,讓我們來在Python中創建一個最簡單的類吧。
最簡單的類
class MyClass1:
pass
上面是在Python中語法允許的情況下創建的一個最簡的類。在Python中創建類需要用到關鍵字class
,然後是類名(註意:在Python中,一般使用駝峰命名法命名類名)。接著就是:
和換行後的pass
語句,表示這個類啥也不幹。
這樣我們就創建了一個名為MyClass1
的類,上面的Python語句僅僅只是創建了這個類,就像之前用def
創建一個函數一樣,只是定義了。函數要想要使用則需要進行調用。而類想要定義則需要初始化:
>>> mc = MyClass1()
像上面的語句就是進行了類的初始化,mc就是MyClass類的一個實例化對象。
接下來我們將一步步介紹創建類時,添加屬性和方法,一步步完善類。
6.2.3 實例化時傳遞參數
有時候在定義一個類時,我們可以直接定義類的屬性,然後在實例化時進行修改,就像這樣:
class Person:
def __init__(self):
self.name = None
self.age = None
lisa = Person()
lisa.name = 'lisa'
lisa.age = 20
上面的代碼中,我們在定義Person類時,同時也定義了2個屬性:name和age。並且初始化為None。
後面則可以通過類.屬性的方式訪問或修改類的屬性。
這種方法雖然可行,但是如果要創建多個實例化對象,每次都要再重新修改屬性name和age非常不方便。於是,我們可以在定義類的時候直接傳入參數,然後在類的初始化時同時為類的屬性賦值。
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
lisa = Person('lisa', 18)
print(lisa.name, lisa.age)
從自動化辦公到智能化辦公lisa 18