面向過程 根據業務實現流程和邏輯,逐步完成python
函數式編程 將功能寫入函數,方便調用數據庫
面向對象 將函數打包,用類封裝,實現更強大功能,更符合人對世界的認知過程編程
類是個封裝器,是用來封裝方法和數據的。函數式編程
不是全部狀況都適用面向對象編程。函數
class 類名:fetch
def 方法(self,arg): #self形式參數不能省略spa
pass設計
obj = 方法() #建立實例/對象,對象實現類中的方法code
class lei: def fetch(self): print(self.backend) def add_record(self): print(self.backend) def del_record(self): print(self.backend) obj = lei() obj.backend = "www.baidu.com" #在對象中封裝數據 obj.fetch() obj.add_record() #執行方法,執行過程當中根據self去obj對象中讀取已經封裝的數據 obj.del_record() """ www.baidu.com www.baidu.com www.baidu.com """
函數式編程的應用場景 --> 各個函數之間獨立且無共用的數據對象
封裝、繼承和多態。
封裝,顧名思義就是將內容封裝到某個地方,之後再去調用被封裝在某處的內容。
因此,在使用面向對象的封裝特性時,須要:
子類繼承父類
某一隻狗就是隻是狗中的一員,不會是貓,不克隆有貓的那些共有特徵和能力。
對於面向對象的繼承來講,其實就是將多個類共有的方法提取到父類中,子類僅需繼承父類而沒必要一一實現每一個方法。
派生類能夠繼承基類中全部的功能
派生類和基類同時存在,優先找派生類
python類能夠同時繼承多個類(C#,Java不能夠)
優先:本身,左邊,右邊
多繼承
擴展:
重載:函數名相同,參數個數不一樣(python不支持)
重寫:派生類中從新實現基類中的方法
多態就是多種形態。
python是原生多態。
類+括號 >>> 自動執行類中的__init__方法
在__init__方法中執行具體封裝的操做
__init__有一個特殊的名字:構造方法 >>>初始化
__del__ 解釋器銷燬對象的時候自動調用,特殊的名字:析構方法
封裝:
使用場景:當同一類型的方法具備相同的參數時,直接封裝到對象便可。
使用場景:把類看成模板,建立多個對象(對象內封裝的數據能夠不同)
單個實例。
使用場景:
建立的實例都是同樣的,沒有必要在內存中保存多份,可歸結爲一個對象。
數據庫連接池
實現方式:靜態方法 + 靜態字段
class ConnectionPoll: __instance = None def __init__(self): self.ip = "1.1.1.1" self.port = 3306 self.pwd = 123 self.username = "root" self.conn_list = [1,2,3,4,5,6,7] @staticmethod def get_instance(): if ConnectionPoll.__instance: return ConnectionPoll.__instance else: ConnectionPoll.__instance = ConnectionPoll() return ConnectionPoll.__instance obj1 = ConnectionPoll.get_instance() print(obj1) obj2 = ConnectionPoll.get_instance() print(obj2) """ <__main__.ConnectionPoll instance at 0x026315D0> <__main__.ConnectionPoll instance at 0x026315D0> """