对象的高度整合
目录
对象的高度整合
一、没有对象
- 以未来我们要连接数据库举例,如果没有面向对象的思想,我们只要想要使用一个方法,就必须得这样做
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方法进行修改,这是非常麻烦的,因此可以考虑使用面向对象
二、有对象
- 有了面向对象之后,对于上述的例子,我们可以这样做
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')
- 对于上述发生的现象,我们可以总结对象其实就是一个高度整合的产物,整合数据与专门操作该数据的方法(绑定方法)
相关推荐
xiaoge00 2020-05-17
wenjieyatou 2020-05-04
spinachcqb 2020-03-06
muzirigel 2020-02-02
wwwxuewen 2020-01-19
jocleyn 2020-01-13
aolishuai 2020-01-07
魏莉的微 2020-01-07
byourb 2019-12-23
First00 2019-12-23
行吟阁 2019-12-15
iviewer是一个具有缩放和图像旋转功能的图像查看小部件。在jQuery官网下载后,有很多文件。直接把文件夹解压拖到项目里。然后再html中引入主要的文件。-- iviewer-鼠标滚轮js -->
xiaoge00 2019-12-07
行吟阁 2019-12-07
WebVincent 2019-11-19
YannZoe 2019-11-17