zoukankan      html  css  js  c++  java
  • python-面向对象编程小结

    面向对象编程有到底有什么好处呢?

    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()
    新增类的方法后

    注意:上面的操作我们在类中新增了一个方法,原来的对象不用做任何的改动,我们就可以使用新的类方法。这种方式,正体现了类的可扩展性高。     

  • 相关阅读:
    Maven核心简析
    块/文件/对象存储对比性概述
    Java SE-基本数据类型对应包装类
    Maven+eclipse快速入门
    IaaS、PaaS、SaaS、CaaS、MaaS五者的区别
    Collections.shuffle()源码分析
    java集合继承关系图
    ArrayList和LinkedList的区别
    ArrayList的实现原理
    session以及分布式服务器session共享
  • 原文地址:https://www.cnblogs.com/AYxing/p/8996462.html
Copyright © 2011-2022 走看看