21、面向對象
阿新 • • 發佈:2018-01-02
tar 面向對象 c程序 rec class 封裝 get 大寫 width
面向對象
類和對象
- 面向過程和面向對象的編程
- 面向過程的編程:函數式編程,C程序等
- 面向對象的編程:C++,Java,Python等
- 類和對象:是面向對象中的兩個重要概念
- 類:是對事物的抽象,比如:汽車模型
- 對象:是類的一個實例,比如:QQ轎車,大客車
- 範例說明
- 汽車模型可以對汽車的特征和行為進行抽象,然後可以實例化一臺真實的汽車實體出來
Python類定義
- Python類的定義
- 使用class關鍵字定義一個類,並且類名的首字母要大寫
- 當程序員需要創建的類型不能用簡單類型表示時就需要創建類
- 類把需要的變量和函數組合在一起,這種包含也稱之為“封裝”
Python類的結構
class 類名: 成員變量 成員函數 class MyClass(): first = 123 def fun(self): print "I am function"
- 對象的創建
- 創建對象的過程稱之為實例化;當一個對象被創建後,包含三個方面的特性:對象的句柄、屬性和方法。
- 句柄用於區分不同的對象
對象的屬性和方法與類中的成員變量和成員函數對應
if __name__ == "__main__": myClass = MyClass() #創建類的一個實例
- 創建對象的過程稱之為實例化;當一個對象被創建後,包含三個方面的特性:對象的句柄、屬性和方法。
構造函數__init__
class Person: def __init__(self, name, lang, website): self.name = name self.lang = lang self.website = website
- self是一個很神奇的參數
- self指向類的一個實例,當實例調用方法時,self就指向這個調用的方法的實例
子類、父類和繼承
# 抽象形狀類 class Shape: # 類的屬性 edge = 0 # 構造函數 def __init__(self, edge): self.edge = edge # 類的方法 def getEdge(self): return self.edge # 抽象方法 def getArea(self): pass #三角形類,繼承抽象形狀類 class Triangle(Shape): width = 0 height = 0 # 構造函數 def __init__(self, width, height): #調用父類構造函數 Shape.__init__(self, 3) self.width = width self.height = height #重寫方法 def getArea(self): return self.width * self.height / 2 #四邊形類,繼承抽象形狀類 class Rectangle(Shape): width = 0 height = 0 # 構造函數 def __init__(self, width, height): #調用父類構造函數 Shape.__init__(self, 4) self.width = width self.height = height #重寫方法 def getArea(self): return self.width * self.height triangle = Triangle(4,5); print triangle.getEdge() print triangle.getArea() rectangle = Rectangle(4,5); print rectangle.getEdge() print rectangle.getArea()
python支持多繼承,但不推薦使用
21、面向對象