美文网首页编程python
Python面向对象之对象的高度整合

Python面向对象之对象的高度整合

作者: 我爱学python | 来源:发表于2019-08-17 15:33 被阅读0次

一、没有对象

  • 以未来我们要连接数据库举例,如果没有面向对象的思想,我们只要想要使用一个方法,就必须得这样做
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006 
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
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语句,非常麻烦,因此我们可以改用默认形参
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006 
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
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')
  • 对于上述发生的现象,我们可以总结对象其实就是一个高度整合的产物,整合数据与专门操作该数据的方法(绑定方法)

相关文章

  • Python面向对象之对象的高度整合

    一、没有对象 以未来我们要连接数据库举例,如果没有面向对象的思想,我们只要想要使用一个方法,就必须得这样做 由于h...

  • 营销比赛二三事

    Python面向对象编程三大特性调研 Python面向对象之封装 在Python中,没有类似 private 之类...

  • python面向对象学习笔记-01

    学习笔记 # 0,OOP-Python面向对象 - Python的面向对象 - 面向对象编程 - 基础 -...

  • Python 面向对象编程

    Python 面向对象编程(一) Python 面向对象编程(一) 虽然Python是解释性语言,但是它是面向对象...

  • 王艳华Pythonday03

    Python的面向对象 Java 面向对象 继承

  • python基础-02

    Python 面向对象 python是一门面向对象的语言 Python内置类属性 python对象销毁(垃圾回收)...

  • python 的赋值是引用

    python 的 一切都是对象 python 是 高度面向对象特性,所以实际上Python里面的任何元素都是一种对...

  • python 关于面对对象

    python 关于面对对象 面向对象 关于对面向对象的理解,我认为就是一种资源整合和工具思维。比如说做一件事,不用...

  • Python OOP-1

    0. OOP-Python面向对象 Python面向对象 面向对象编程基础公有私有继承组合,Mixin 魔法函数魔...

  • Python精简入门学习(十四)

    Python精简入门学习之面向对象(oop) -面向对象 -类和对象

网友评论

    本文标题:Python面向对象之对象的高度整合

    本文链接:https://www.haomeiwen.com/subject/rfcksctx.html