標籤:分享 color 操作 物件導向編程 一起 內容 opened rom sql
物件導向編程有到底有什麼好處呢?
1、將資料與操作改資料的功能整合在一起。
A:以前我們操作資料庫的方式如下:
1、通過定義資料庫操作的函數。
2、每次操作時寫傳資料庫的參數和所要操作的內容。
#通過調用函數的方式操作資料庫def exc1(host,port,db,charset): conn=connect(host,port,db,charset) conn.execute(sql) return xxxdef exc2(host,port,db,charset,proc_name) conn=connect(host,port,db,charset) conn.call_proc(sql) return xxx#每次調用都需要重複傳入一堆參數exc1(‘127.0.0.1‘,3306,‘db1‘,‘utf8‘,‘select * from tb1;‘)exc2(‘127.0.0.1‘,3306,‘db1‘,‘utf8‘,‘預存程序的名字‘)
通過函數操作資料庫
3、上面的操作有個問題,就是每次操作的時候都要傳入一堆的參數。
即便是可以簡化,也只能是定義全域變數,調用時還要重複傳入一堆參數。
HOST=‘127.0.0.1’PORT=3306DB=‘db1’CHARSET=‘utf8’def exc1(host,port,db,charset): conn=connect(host,port,db,charset) conn.execute(sql) return xxxdef exc2(host,port,db,charset,proc_name) conn=connect(host,port,db,charset) conn.call_proc(sql) return xxxexc1(HOST,PORT,DB,CHARSET,‘select * from tb1;‘)exc2(HOST,PORT,DB,CHARSET,‘預存程序的名字‘)
通過定義全域變數
B、當我們學了類之後,就可以這樣操作了。
# 3、通過類的操作,這樣就可以把資料與操作功能結合到一起了。# 3.1把共有的屬性抽象出來: #host、port、db# 3.2把共有的方法抽象出來: #exc1、exc2class MySQLHandler: def __init__(self,host,port,db,charset=‘utf8‘): self.host=host self.port=port self.db=db self.charset=charset self.conn=connect(self.host,self.port,self.db,self.charset) def exc1(self,sql): return self.conn.execute(sql) def exc2(self,sql): return self.conn.call_proc(sql)# 4.執行個體化出一個對象。obj=MySQLHandler(‘127.0.0.1‘,3306,‘db1‘)# 5.通過對這個對象的操作,就可以把資料和相應的操作功能結合obj.exc1(‘select * from tb1;‘)obj.exc2(‘預存程序的名字‘)
通過定義類的方式操作
2、可擴充性高
A、在類中對資料屬性的擴充
B、在類中對函數屬性的擴充
class Chinese: def __init__(self,name,age,sex): self.name=name self.age=age self.sex=sexp1=Chinese(‘egon‘,18,‘male‘)p2=Chinese(‘alex‘,38,‘female‘)p3=Chinese(‘wpq‘,48,‘female‘)
類的原代碼
class Chinese: country=‘China‘ def __init__(self,name,age,sex): self.name=name self.age=age self.sex=sex def tell_info(self): info=‘‘‘ 國籍:%s 姓名:%s 年齡:%s 性別:%s ‘‘‘ %(self.country,self.name,self.age,self.sex) print(info)p1=Chinese(‘egon‘,18,‘male‘)p2=Chinese(‘alex‘,38,‘female‘)p3=Chinese(‘wpq‘,48,‘female‘)print(p1.country)p1.tell_info()
新增類的方法後
注意:上面的操作我們在類中新增了一個方法,原來的對象不用做任何的改動,我們就可以使用新的類方法。這種方式,正體現了類的可擴充性高。
python-物件導向編程小結