第26天

面向对象试题
1、类的属性和对象的属性有什么区别?
2、面向过程编程与面向对象编程的区别与应用场景?
3、类和对象在内存中是如何保存的。(参考上课时画的图联想着写)
4、什么是绑定到对象的方法,、如何定义,如何调用,给谁用?有什么特性
5、简述面向对象三大特性:
6、什么是新式类,什么是经典类,二者有什么区别?什么是深度优先,什么是广度优先?
7、解释多态、多态性、鸭子类型
8、如下示例, 请用面向对象的形式优化以下代码
   在没有学习类这个概念时,数据与功能是分离的,如下

   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','存储过程的名字')

9、下面这段代码的输出结果将是什么?请解释。
	class Parent(object):
	   x = 1

	class Child1(Parent):
	   pass

	class Child2(Parent):
	   pass

	print(Parent.x, Child1.x, Child2.x)

	Child1.x = 2
	print(Parent.x, Child1.x, Child2.x)

	Parent.x = 3
	print(Parent.x, Child1.x, Child2.x)


10、定义课程类,实例化出python、linux、go三门课程对象
	课程对象独有的特征:
		课程名=‘xxx’
		周期=‘3mons’
		价格=3000

	课程对象可以:
		1、查看课程的详细信息



11、用面向对象的形式编写一个老师类, 老师有特征:编号、姓名、性别、年龄、等级、工资,老师类中有功能
	1、生成老师唯一编号的功能,可以用hashlib对当前时间加上老师的所有信息进行校验得到一个hash值来作为老师的编号 
		def create_id(self):
			pass
	2、获取老师所有信息
		def tell_info(self):
			pass

	3、将老师对象序列化保存到文件里,文件名即老师的名字,提示功能如下
		def save(self):
			with open('老师的名字','wb') as f:
				pickle.dump(self,f)

	4、从文件夹中取出存储老师对象的文件,然后反序列化出老师对象,提示功能如下
		def get_obj_by_id(self,name):
			return pickle.load(open(name,'rb'))



12、抽象老师类与学生类得到父类,用继承的方式减少代码冗余


13、基于面向对象设计一个对战游戏并使用继承优化代码,参考博客
	http://www.cnblogs.com/linhaifeng/articles/7340497.html#_label1

14、多重继承的执行顺序,请解答以下输出结果是什么?并解释。

	class A(object):
	   def __init__(self):
	       print('A')
	       super(A, self).__init__()

	class B(object):
	   def __init__(self):
	       print('B')
	       super(B, self).__init__()

	class C(A):
	   def __init__(self):
	       print('C')
	       super(C, self).__init__()

	class D(A):
	   def __init__(self):
	       print('D')
	       super(D, self).__init__()

	class E(B, C):
	   def __init__(self):
	       print('E')
	       super(E, self).__init__()

	class F(C, B, D):
	   def __init__(self):
	       print('F')
	       super(F, self).__init__()

	class G(D, B):
	   def __init__(self):
	       print('G')
	       super(G, self).__init__()

	if __name__ == '__main__':
	   g = G()
	   f = F()

15、定义一个类:圆形,该类有半径,周长,面积等属性,将半径隐藏起来,将周长与面积开放
	参考答案(http://www.cnblogs.com/linhaifeng/articles/7340801.html#_label4)
posted @ 2021-09-01 20:38  BIye  阅读(61)  评论(0)    收藏  举报