日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

Python面向對象編程——總結面向對象的優(yōu)點

系統(tǒng) 1692 0

Python面向對象編程——總結面向對象的優(yōu)點

一、從代碼級別看面向對象

1、在沒有學習類這個概念時,數(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

#每次調用都需要重復傳入一堆參數(shù)
exc1('127.0.0.1',3306,'db1','utf8','select * from tb1;')
exc2('127.0.0.1',3306,'db1','utf8','存儲過程的名字')
          
        

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,'存儲過程的名字')
          
        

3、但是2的解決方法也是有問題的,按照2的思路,我們將會定義一大堆全局變量,這些全局變量并沒有做任何區(qū)分,即能夠被所有功能使用,然而事實上只有HOST,PORT,DB,CHARSET是給exc1和exc2這兩個功能用的。言外之意:我們必須找出一種能夠將數(shù)據(jù)與操作數(shù)據(jù)的方法組合到一起的解決方法,這就是我們說的類了。

          
            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('存儲過程的名字')
          
        

總結使用類可以:

          
            將數(shù)據(jù)與專門操作該數(shù)據(jù)的功能整合到一起。
          
        

二、可擴展性高

定義類并產(chǎn)生三個對象

          
            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()
          
        

更多文章、技術交流、商務合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 贵溪市| 灌阳县| 伊通| 汾阳市| 焦作市| 孟连| 南汇区| 肇源县| 崇仁县| 休宁县| 克山县| 杭锦后旗| 页游| 会东县| 大田县| 施秉县| 明水县| 德昌县| 彭阳县| 上蔡县| 突泉县| 定陶县| 错那县| 崇文区| 巩义市| 绍兴市| 华容县| 榆林市| 章丘市| 友谊县| 葵青区| 托克托县| 阜康市| 新乐市| 巫溪县| 神农架林区| 滦南县| 渭南市| 新乡市| 临漳县| 铅山县|