1.面向对象三大特性,各有什么用处,说说你的理解  继承 :继承指的是类与类之间的关系,是一种什么“是”什么的关系,继承的功能之一就是用来解决代码重用问题继承是一种创建新类的方式在python中,新建的类可以继承一个或多个父类,父类又称为基类或超类,新建的类称为派生类或子类
  封装 :将数据隐藏起来然后对外提供操作该数据的接口,然后我们可以在接口附加上对该数据操作的限制,以此完成对数据属性操作的严格控制.封装方法另一个目的是隔离复杂度    多态 :实现接口重用,一个接口,多种实现 。增加了程序的灵活性,以不变应万变,不论对象千变万化,使用者都是同一种形式去调用,如func(animal)。
增加了程序额可扩展性,通过继承animal类创建了一个新的类,使用者无需更改自己的代码,还是用func(animal)去调用

2.类的属性和对象的属性有什么区别?       类的属性分为数据属性和函数属性。类的数据属性时所有对象共享的,类的函数属性是绑定给对象用的,称为绑定到对象的方法。对象的属性可能来自类定义,即类属性。(类定义自身、类定义继承两种途径)对象的属性还可能是该对象实例定义的,即对象属性。

3.面向过程编程与面向对象编程的区别与应用场景?    面向过程:基本设计思路就是把这个大的问题分解成很多个小问题或子过程,这些子过程在执行的过程中继续分解,直到小问题足够简单到可以在一个小步骤范围内解决。优点是:复杂的问题流程化,进而简单化  缺点是:扩展性极差。面向过程的程序设计思想一般用于那些功能一旦实现之后就很少需要改变的场景    面向对象:面向对象编程是利用“类”和“对象”来创建各种模型来实现对真实世界的描述。与面向过程机械式的思维方式形成鲜明对比,面向对象更加注重对现实世界而非流程的模拟,是一种“上帝式”的思维方式。优点:可扩展型高,可维护性高,使程序更加容易扩展和易更改,使开发效率变的更高,基于面向对象的程序可以使它人更加容易理解你的代码逻辑,从而使团队开发变得更从容缺点:编程的复杂度远高于面向过程,不了解面向对象而立即上手并基于它设计程序,极容易出现过度设计的问题,而且在一些扩展性要求低的场景使用面向对象会徒增编程难度。
应用于需求经常变化的软件中

4.类和对象在内存中是如何保存的  以字典的方式保存,代码在类定义阶段便会执行,因而会产生新的名称空间,用来存放类的变量名和函数名,可以通过__dict__查看。
类以及类中的方法在内存中只有一份,而根据类创建的每一个对象都在内存中需要存一份

5.什么是绑定到对象的方法、绑定到类的方法、解除绑定的函数、如何定义,如何调用,给谁用?有什么特性
  绑定到对象的方法:没有被任何装饰器装饰的方法。自动将对象当作第一个参数传入  绑定到类的方法:用classmethod装饰器装饰的方法。自动将类当作第一个参数传入  非绑定方法:在类内部用staticmethod装饰的函数即非绑定方法,就是普通函数,statimethod不与类或对象绑定,谁都可以调用,没有自动传值效果6.使用实例进行 获取、设置、删除 数据, 分别会触发类的什么私有方法  
class A(object):def __setitem__(self, key, value):self.__dict__[key] = valuedef __getitem__(self, item):return self.__dict__[item]def __delitem__(self, key):del self.__dict__[key]a = A()
a["key"] = "val"
print(a.__dict__)
b = a["key"]
print(b)
del a["key"]
print(a.__dict__)

7.python中经典类和新式类的区别

在python2中,没有显式的继承object类的类,以及该类的子类,都是经典类
在python2中,显式地声明继承object的类,以及该类的子类,都是新式类
在python3中,无论是否继承object,都默认继承object,即python3中所有类均为新式类object是所有python类的基类,它提供了一些常见方法(如__str__)的实现经典类的属性查找的方式是是深度优先,新式类的查找方式是广度优先

8.如下示例, 请用面向对象的形式优化以下代码

def exc1(host,port,db,charset,sql):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','存储过程的名字')

题目代码

class MySQLHandler:def __init__(self,host,port,db,charset='utf8'):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 tb1;')
obj.exc2('存储过程的名字')

9.示例1, 现有如下代码, 会输出什么

class People(object):__name = "luffy"__age = 18p1 = People()print(p1.__name, p1.__age)

会报错,因为name和age都隐藏了,AttributeError: 'People' object has no attribute '__name'

10.示例2, 现有如下代码, 会输出什么
class People(object):def __init__(self):print("__init__")def __new__(cls, *args, **kwargs):print("__new__")return object.__new__(cls, *args, **kwargs)People()# 输出:
__new__
__init__#解析:  new: 对象的创建,是一个静态方法,第一个参数是cls。
         init : 对象的初始化, 是一个实例方法,第一个参数是self。先有创建,才有初始化。即先new,而后init

 
 
 
 
 
 




转载于:https://www.cnblogs.com/lys666/p/10000341.html

面向对象编程设计练习题(1)相关推荐

  1. java面向对象上机题库_Java面向对象编程上机-练习题汇总

    Java面向对象编程上机-练习题汇总 [练习题1]类的成员变量: 猜数字游戏:一个类A有一个成员变量v,有一个初值100.定义一个类,对A类的成员变量v进行猜.如果大了则提示大了,小了则提示小了.等于 ...

  2. 第五章面向对象编程设计与开发

    5.1 什么是面向对象的程序设计 面向过程的程序设计 优点:复杂的问题流程化,进而简单化 缺点:一套流水线或者流程就是用来解决一个问题,扩展性极差. 应用场景:面向过程的程序设计思想一般用于那些功能一 ...

  3. python由谁设计并领导开发_Python全栈开发之路 【第七篇】:面向对象编程设计与开发(1)...

    本节内容 一.编程范式 编程指的是写程序.敲代码,就是指程序员用特定的语法.数据结构和算法编写的代码,目的是来告诉计算机如何执行任务的. 在编程的世界里最常见的两大流派是:面向过程与面向对象.&quo ...

  4. java5.面向对象编程(中)练习题

    1.java类是否可以多继承,怎么实现多继承? java不可以多继承,可以通过接口实现多继承 定义类A 和类B 如下: class A {int a = 1;double d = 2.0;void s ...

  5. 举例说明层次分析的三大原则_LabVIEW面向对象编程_初窥门槛(2)_设计原则(SOLID)...

    该系列一共是9篇文章,本文是该系列的第二篇,是讲述通用的面向对象编程设计原则(SOLID),LabVIEW作为一门具备面向对象编程范式的图形化编程语言当然也要遵循上述的通用设计原则,当然除了接口隔离原 ...

  6. php 取对象数据_过程式编程和面向对象编程有什么区别?怎么理解php对象的概念?...

    PHP编程中对象的概念? 在上一篇文章咱们介绍了使用了php中的new pdo来连接数据库MYsql,其实在我们学习编程语言时经常会碰到"对象"这个词汇,准确来说是"面向 ...

  7. C#中面向对象编程中的函数式编程

    目录 介绍 面向对象编程中仿真的函数式编程技术 粒度不匹配 面向对象的函数式编程构造 相互关系函数式编程/面向对象程序设计 C#中的函数式编程集成 函数级别的代码抽象 操作组合 函数部分应用和局部套用 ...

  8. 面向对象编程的灾难:是时候考虑更新换代了!

    全文共13316字,预计学习时长26分钟 图片来源:Unsplash/Jungwoo Hong 许多人认为面向对象编程是计算机科学的珍宝,代码组织的最终解决方案,所有问题的终极回答,编写程序的唯一真正 ...

  9. 面向对象编程 - 练习题

    C#面向对象编程-练习题 1.C#中的方法重写使用关键字(a). override overload static Inherit 2.以下的C#代码,试图用来定义一个接口: public inter ...

最新文章

  1. 算法分析的一个小例子--大数乘法
  2. JDBC(二)驱动程序类型发展历程
  3. python是如何登上编程语言排行榜榜首的
  4. python flask web部署_webapp开发之使用apache部署python flask webapp
  5. MISCONF Redis配置为保存RDB快照
  6. API不是从业务抽象出来的(1):设计思维
  7. 蚁群算法原理及python实现
  8. android horizontalscrollview顶部导航,带有居中效果的HorizontalScrollView使用说明
  9. vue 点击取消按钮关闭页面_vue 点击按钮弹窗,点击关闭按钮关闭弹窗。
  10. fastjson 1.2.24 反序列化导致任意命令执行漏洞
  11. 中文写代码?开始不信后来用中文写了剧情小游戏!嗯,真香~
  12. idea spring boot 修改 html,js 等不用重启即时生效
  13. 打造自己的图像识别模型
  14. Python 斐波那契数列 及 杨辉三角
  15. 洛谷p1598题解记录
  16. BUCTOJ邀请赛20180814-D: String
  17. 构成社群的五要素,你了解吗?
  18. openssl 交叉编译 armv7内核
  19. ISIS 7 Professional出现(No power supply specifed for net 3.3V in Power Rail Configuration.)异常
  20. 目标检测之one-stage和two-stage网络的区别

热门文章

  1. easyUI属性汇总
  2. 手游项目初期的一些想法
  3. nmon Analyser分析仪
  4. pytest测试框架(二)---fixture介绍
  5. 网络服务中常用的端口介绍
  6. JUnit5 @Tag注解示例
  7. JSP Cookie 处理
  8. stringr | 文本处理方法(Ⅰ-3):字符串处理函数(下)
  9. mysql sql注入怎么获取数据_手把手教你通过SQL注入盗取数据库信息
  10. qpsk的matlab平方根升余,【求助】求助:【QPSK功率谱密度的matlab的代码】 - 仿真模拟 - 小木虫 - 学术 科研 互动社区...