python面向對象:小結

從代碼級別看面向對象python

一、在沒有學習類這個概念時,數據與功能是分離的mysql

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

  

二、能想到的解決方法是,把這些變量都定義成全局變量sql

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

  

三、可是2的解決方法也是有問題的,按照2的思路,咱們將會定義一大堆全局變量,這些全局變量並無作任何區分,即可以被全部功能使用,然而事實上只有host,port,db,charset是給exce1,和exc2這兩個功能用的,言外之意:咱們必須找出一種可以將數據與操做數據的方法組合到一塊兒的解決方法,這就是咱們說的類了學習

from pymysql import connect


class mysqlhandler:
    def __init__(self, host, port, db, charset="utf-8"):
        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 tab1')
obj.exc2('存儲過程的名字')

  總結使用類能夠:spa

將數據與專門操做該數據的功能整合到一塊兒

  

可擴展性高對象

定義類併產生三個對象blog

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

  

  

若是咱們新增一個類屬性,將會馬上反映給全部對象,而對象卻無需修改utf-8

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', 33, 'female')
p3 = chinese('wpq', 50, 'female')

print(p1.country)
p1.tell_info()
相關文章
相關標籤/搜索