Python面向?qū)ο缶幊獭偨Y(jié)面向?qū)ο蟮膬?yōu)點(diǎn)
一、從代碼級(jí)別看面向?qū)ο?
1、在沒(méi)有學(xué)習(xí)類這個(gè)概念時(shí),數(shù)據(jù)與功能是分離的
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
#每次調(diào)用都需要重復(fù)傳入一堆參數(shù)
exc1('127.0.0.1',3306,'db1','utf8','select * from tb1;')
exc2('127.0.0.1',3306,'db1','utf8','存儲(chǔ)過(guò)程的名字')
2、我們能想到的解決方法是,把這些變量都定義成全局變量
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,'存儲(chǔ)過(guò)程的名字')
3、但是2的解決方法也是有問(wèn)題的,按照2的思路,我們將會(huì)定義一大堆全局變量,這些全局變量并沒(méi)有做任何區(qū)分,即能夠被所有功能使用,然而事實(shí)上只有HOST,PORT,DB,CHARSET是給exc1和exc2這兩個(gè)功能用的。言外之意:我們必須找出一種能夠?qū)?shù)據(jù)與操作數(shù)據(jù)的方法組合到一起的解決方法,這就是我們說(shuō)的類了。
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)
obj=MySQLHandler('127.0.0.1',3306,'db1')
obj.exc1('select * from tb1;')
obj.exc2('存儲(chǔ)過(guò)程的名字')
總結(jié)使用類可以:
將數(shù)據(jù)與專門操作該數(shù)據(jù)的功能整合到一起。
二、可擴(kuò)展性高
定義類并產(chǎn)生三個(gè)對(duì)象
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')
如果我們新增一個(gè)類屬性,將會(huì)立刻反映給所有對(duì)象,而對(duì)象卻無(wú)需修改
class Chinese:
country='China'
def __init__(self,name,age,sex):
self.name=name
self.age=age
self.sex=sex
def tell_info(self):
info='''
國(guó)籍:%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()
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
