1. 程式人生 > >python-面向對象編程小結

python-面向對象編程小結

擴展性 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-面向對象編程小結