1、没有对象
- 以将来咱们要链接数据库举例,若是没有面向对象的思想,咱们只要想要使用一个方法,就必须得这样作
import pymysql # 链接mysql的三方库,能够pip3 install pymysql安装
def exc1(host, port, db, charset, sql):
conn = pymysql.connect(host, port, db, charset)
conn.execute(sql)
return xxx
def exc2(proc_name):
conn = pymysql.connect(host, port, db, charsett)
conn.call_proc(sql)
return xxx
exc1('1.1.1.1', 3306, 'db1', 'utf-8', 'select * from t1')
exc1('1.1.1.1', 3306, 'db1', 'utf-8', 'select * from t2')
exc1('1.1.1.1', 3306, 'db1', 'utf-8', 'select * from t3')
exc1('1.1.1.1', 3306, 'db1', 'utf-8', 'select * from t4')
- 因为host、port、db、charset多是固定不变的,sql一直在变化,所以咱们经过上述的方法实现不一样的sql语句,很是麻烦,所以咱们能够改用默认形参
def exc1(sql, host='1.1.1.1', port=3306, db='db1', charset='utf-8'):
conn = pymysql.connect(host, port, db, charset)
conn.execute(sql)
return xxx
exc1('select * from t1')
exc1('select * from t2')
exc1('select * from t3')
exc1('select * from t4')
- 虽然是用默认参数简化了操做,可是对于不一样引用的对象,参数并非一成不变的,或者咱们须要对exc2方法进行修改,这是很是麻烦的,所以能够考虑使用面向对象
2、有对象
import pymysql
class Foo:
def __init__(self, host, port, db, chartset):
self.host = host
self.port = port
self.db = db
self.charset = chartset
def exc1(self, sql):
conn = pymysql.connect(self.host, self.port, self.db, self.charset)
conn.execute(sql)
return xxx
def exc2(self, proc_name):
conn = pymysql.connect(self.host, self.port, self.db, self.charsett)
conn.call_proc(sql)
return xxx
obj1 = Foo('1.1.1.1', 3306, 'db1', 'utf-8')
obj1.exc1('select * from t1')
obj1.exc1('select * from t2')
obj1.exc1('select * from t3')
obj1.exc1('select * from t4')
obj2 = Foo('1.1.1.2', 3306, 'db1', 'utf-8')
obj2.exc1('select * from t4')
- 对于上述发生的现象,咱们能够总结对象其实就是一个高度整合的产物,整合数据与专门操做该数据的方法(绑定方法)