从代码级别看面向对象

1、在没有学习类这个概念时,数据与功能是分离的

ef exc1(host,port,db,charset):conn=connect(host,port,db,charset)conn.execute(sql)return xxxdef 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','存储过程的名字')

  

2、能想到的解决方法是,把这些变量都定义成全局变量

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 xxxdef exc2(host,port,db,charset,proc_name)conn=connect(host,port,db,charset)conn.call_proc(sql)return xxxexc1(HOST,PORT,DB,CHARSET,'select * from tb1;')
exc2(HOST,PORT,DB,CHARSET,'存储过程的名字')

  

3、但是2的解决方法也是有问题的,按照2的思路,我们将会定义一大堆全局变量,这些全局变量并没有做任何区分,即能够被所有功能使用,然而事实上只有host,port,db,charset是给exce1,和exc2这两个功能用的,言外之意:我们必须找出一种能够将数据与操作数据的方法组合到一起的解决方法,这就是我们说的类了

from pymysql import connectclass mysqlhandler:def __init__(self, host, port, db, charset="utf-8"):self.host = hostself.port = portself.db = dbself.charset = charsetself.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('存储过程的名字')

  总结使用类可以:

将数据与专门操作该数据的功能整合到一起

  

可扩展性高

定义类并产生三个对象

class Chinese:def __init__(self,name,age,sex):self.name=nameself.age=ageself.sex=sexp1=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 = nameself.age = ageself.sex = sexdef 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()

  

转载于:https://www.cnblogs.com/mike-liu/p/9157946.html

python面向对象:小结相关推荐

  1. python面向对象程序设计实训学生自我总结_Python面向对象程序设计示例小结

    本文实例讲述了Python面向对象程序设计.分享给大家供大家参考,具体如下: 示例1: #encoding:utf-8 '''example 1 class test: def __init__(se ...

  2. python 打印对象的全部属性_详解:Python 面向对象静态方法、类方法、属性方法知识点小结...

    今天为大家带来的内容是介绍了Python 面向对象静态方法.类方法.属性方法,总结分析了Python 面向对象程序设计中静态方法.类方法.属性方法相关概念.知识点.操作技巧与使用注意事项,需要的朋友可 ...

  3. Python 面向对象 基础

    编程范式概述: 面向过程 和 面向对象 以及函数式编程 面向过程:(Procedure Oriented)是一种以事件为中心的编程思想. 就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实 ...

  4. 23 Python 面向对象

    面向过程 VS 面向对象 面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. 优点是:极大的降低了写程序的复 ...

  5. 10. Python面向对象

    Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的.如果接触过java语言同学应该都知道,Java面向对象三大特征是:封装.继承.多态.Pytho ...

  6. python面向对象三大特性_Python面向对象之多态原理与用法案例分析

    本文实例讲述了Python面向对象之多态原理与用法.分享给大家供大家参考,具体如下: 目标 多态 面向对象三大特性 封装 根据 职责 将 属性 和 方法 封装 到一个抽象的 类 中 定义类的准则 继承 ...

  7. python面向对象的特征_03 Python 关键点讲解:面向对象的机制

    本节开始讲解量化交易系统最基本的编程工具 Python 的关键知识点.我们经过调研发现,目前市面上量化交易相关的书籍.课程等教学产品多数从最基础的安装.语法.函数-开始介绍 Python 这个工具,我 ...

  8. python面向对象类的成员_Python面向对象中类的成员

    Python面向对象中类的成员总共有三种,分别是字段.方法和属性 Python Version: 3.5+ 字段 普通字段1 2 3 4 5 6 7 8class A: def __init__(se ...

  9. python 面向对象的封装_Python面向对象封装操作案例详解

    本文实例讲述了Python面向对象封装操作.分享给大家供大家参考,具体如下: 目标 封装 小明爱跑步 存放家具 01. 封装 封装 是面向对象编程的一大特点 面向对象编程的 第一步 ―― 将 属性 和 ...

  10. 10.Python面向对象编程

    配套视频教程 本文B站配套视频教程 类和对象 万物皆对象 分类是人们认识世界的一个很自然的过程,在日常生活中会不自觉地将对象进行进行分类 对象归类 类是抽象的概念,仅仅是模板 比如说:"人& ...

最新文章

  1. 11matlab [A rank]=sort (B), P = p(rank,: )的问题 and ~符号运算
  2. 分享|智办事助力杭州佰勤医疗器械组织管理数字化过渡
  3. 若变量均已正确定义并赋值,以下合法的c语言赋值语句是,若变量均已正确定义并赋值,以下合法的C语言赋值语句是()...
  4. 写给将要参加软考的朋友们
  5. Java文件流应用:复制文件
  6. 家纺B2C优雅100获IDG及DCM 1000万美元投资
  7. java class 字符串_java基础知识四 math类 字符 字符串 控制台输入输出 StringBuilder与StringBuffer...
  8. 站立会议03--个人总结
  9. poj2594 Treasure Exploration 二分匹配之最小路径覆盖+传递闭包
  10. 自动驾驶3-2 安全保证和测试的行业方法 Industry Methods for Safety Assurance and Testing
  11. 华为数通HCIA笔记——路由基础
  12. mac touchbar 自定义
  13. OMNeT 例程 Tictoc18 学习笔记
  14. 阿里巴巴等大厂的 Java岗位要求是什么?
  15. 基于51单片机的智能窗口控制系统(protues仿真+程序+论文+PPT+PCB)
  16. 递归走楼梯or斐波那契数列
  17. 计算机教学音乐,计算机音乐的教学和应用研究
  18. Hi3516开发笔记(二):Hi3516虚拟机基础环境搭建之串口调试、网络连接以及sftp文件传输
  19. 【怎么制作ppt】Focusky教程 | 导入PPT后出现内容丢失怎么办?
  20. 三农数据(1996-2020)四:农、畜牧业产品产量、生产性固定资产、农场数、耕地面积等

热门文章

  1. 利用自定义事件实现不同窗体间的通讯 -- C#篇
  2. linux 串口内核加载,linux对串口编程的详解(从应用层到内核驱动,包括232,485)
  3. java版mc植物生长条件_植物生长三大必要条件
  4. Linux网络编程--tcp服务器
  5. apollo本地启动调方式
  6. php显示网络图片,PHP在服务器端怎么显示图片呢?
  7. 【渝粤教育】国家开放大学2018年秋季 0014-22T秘书学(一) 参考试题
  8. 国家开放大学2021春1070组织行为学题目
  9. 【渝粤教育】广东开放大学 环境与资源保护法 形成性考核 (56)
  10. 操作SSO对象模型时,异常“SSO_E_CANARY_VALIDATION_FAILURE”的处理