python-面向對象編程小結
阿新 • • 發佈:2018-05-06
擴展性 handle one 每次 內容 屬性 mys PQ play
面向對象編程有到底有什麽好處呢?
1、將數據與操作改數據的功能整合在一起。
A:以前我們操作數據庫的方式如下:
1、通過定義數據庫操作的函數。
2、每次操作時寫傳數據庫的參數和所要操作的內容。
#通過調用函數的方式操作數據庫 def exc1(host,port,db,charset): conn=connect(host,port,db,charset) conn.execute(sql) return xxx def 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=3306 DB=‘db1’ CHARSET=‘utf8’ def exc1(host,port,db,charset): conn=connect(host,port,db,charset) conn.execute(sql)通過定義全局變量return xxx def exc2(host,port,db,charset,proc_name) conn=connect(host,port,db,charset) conn.call_proc(sql) return xxx exc1(HOST,PORT,DB,CHARSET,‘select * from tb1;‘) exc2(HOST,PORT,DB,CHARSET,‘存儲過程的名字‘)
B、當我們學了類之後,就可以這樣操作了。
# 3、通過類的操作,這樣就可以把數據與操作功能結合到一起了。 # 3.1把共有的屬性抽象出來:通過定義類的方式操作#host、port、db # 3.2把共有的方法抽象出來: #exc1、exc2 class 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=sex p1=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-面向對象編程小結