世間萬物皆 “對象”,對象 “集合” 即為 “類”
——有相同屬性的對象的集合聚集成一類,
將類賦值給一個變量,就是一個對象,即為將類實例化
類:變量→屬性 和 函數→方法
面向過程 以解決問題的步驟來划分
面向對象 以功能來划分
面向過程就是自頂向下的編程;
面向對象就是高度實物抽象化。
面向過程和面向對象並沒有優劣之分,只有適合與不適合。
面向過程
優點:性能比面向對象高,因為類調用時需要實例化,開銷比較大,比較消耗資源;比如單片機、嵌入式開發、 Linux/Unix等一般采用面向過程開發,性能是最重要的因素。
缺點:沒有面向對象易維護、易復用、易擴展
面向對象
優點:易維護、易復用、易擴展,由於面向對象有封裝、繼承、多態性的特性,可以設計出低耦合的系統,使系統 更加靈活、更加易於維護
缺點:性能比面向過程低
面向過程 和 面向對象 編程
- 面向過程 編程:函數式編程,C程序,shell等
- 面向對象 編程:功能式編程,C++ ,Java,Python等
面向對象的基本結構:
面向對象的主要思想是: 封裝 繼承 多態
類的定義:
類把需要的變量和函數組合成一起,這樣包含稱為"封裝"
class A(object):
類的結構:
class 類名:
成員變量 - 屬性
成員函數 - 方法
Class 示例:

class People(object): # 定義類(class),object可以有,也可以沒有 color = 'yellow' #定義了一個靜態屬性,成員變量 def think(self): #定義了一個動態方法,這個方法里一定要有self,還可以帶多個屬性,成員函數 self.color = "black" #如果需要調用類里的屬性,就要用到self.color來調用該靜態屬性 print("I am a %s" % self.color) #調用動態方法時的輸出 print("i am a thinker") ren = People() #將類賦值給'ren'這個變量,就是一個對象,即為將類實例化 print(ren) # 單純打印這個'ren'變量是一個對象(object),所以將類實例化后的便是對象(object) print(ren.color) #輸出,'ren'對象的靜態屬性, ren.think() #使用這個類里面的.think()方法 # 輸出結果: <__main__.People object at 0x7f646d144690> #打印這個方法的信息 yellow #靜態屬性的輸出結果 I am a black #這里輸出的是 ren.think() i am a thinker