day 20 作业
作业
1、下面这段代码的输出结果将是什么?请解释。
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)
1 1 1 # 父类的parent x=1, child1继承父类parent x=1, child2继承父类parent x=1.
1 2 1 # 父类的parent x=1, child1查找本身 x=2, child2继承父类parent x =1
3 2 3 # 父类的parent x=3, child1查找本身 x=2,child2继承父类parent x=3
2、多重继承的执行顺序,请解答以下输出结果是什么?并解释。
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()
'''
新式类:G-D-A-B-F-C-B-D-A
'''
3、什么是新式类,什么是经典类,二者有什么区别?什么是深度优先,什么是广度优先?
新式类:
继承object的类都称之为新式类
python3中,子类不继承自定义的类,默认继承object
经典类:
在python2中,凡是没有继承object的类都是经典类
深度优先:
一直下去
1 经典类多继承搜索顺序(深度优先):
2 先深入继承树左侧查找,然后再返回,开始查找右侧
广度优先:
多继承搜索顺序
1 先在水平方向查找,再向上查找
4、用面向对象的形式编写一个老师类, 老师有特征:编号、姓名、性别、年龄、等级、工资,老师类中有功能。
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,id):
return pickle.load(open(id,'rb'))
5、按照定义老师的方式,再定义一个学生类
6、抽象老师类与学生类得到父类,用继承的方式减少代码冗余
import pickle
import time
import hashlib
from datetime import date,datetime
class Teacher(object):
def __init__(self,name,sex,age,level,sal):
self.name = name
self.sex = sex
self.age = age
self.level = level
self.sal = sal
def create_id(self):
res = datetime.today().strftime('%Y-%m-%d %X')
m = hashlib.md5
m.update(bytes(res,encoding='utf-8'))
self.id =str(m.hexdigit()) + str(self.name) + str(self.sex) + str(self.age) + str(self.level) + str(self.sal)
self.save()
def tell_info(self):
print('''
编号:(self.number)
名字:(self.name)
性别:(self.sex)
年龄:(self.age)
等级:(self.level)
薪资:(self.sal)
''')
def save(self):
with open(self.number, 'wb') as f:
pickle.dump(self, f)
def get_obj_id(self,id):
return pickle.load(open(self.number,'rb'))
class Student():
def __init__(self,name,age,sex):
self.name = name
self.age = age
self.sex = sex
def tell_info(self):
print('''
姓名:(self.name)
年龄:(self.age)
性别:(self.sex)
''')
stu = Student('老赵',24,'male')
print(stu.name,stu.age)
day 20 作业的更多相关文章
- day 20作业
目录 1.下面这段代码的输出结果将是什么?请解释. 2.多重继承的执行顺序,请解答以下输出结果是什么?并解释. 3.什么是新式类,什么是经典类,二者有什么区别?什么是深度优先,什么是广度优先? 4.用 ...
- SQL作业的操作全
--定义创建作业 转自http://hi.baidu.com/procedure/blog/item/7f959fb10d76f95d092302dd.html DECLARE @jobid uniq ...
- SQL作业及调度创建
转自:http://www.cnblogs.com/accumulater/p/6223909.html --定义创建作业 转自http://hi.baidu.com/procedure/blog/i ...
- 【MOOC操作系统】测试题大题-进程调度 先入先服务算法例题 【某多道程序系统供用户使用的主存为100K,磁带机2台,打印机1台,采用可变分区存储管理,静态方式分配外围设备(进程获得所需全部设备才能进入内容),忽略用户作业的I/O时间。采用动态分区、首次匹配法(从低地址区开始)分配主存,一个作业创建一个进程,且运行中不紧缩内存。作业调度采用FCFS算法,在主存中的进程采用剩余时间最短调度算法。】
分析图: 答案: (1) 8 : 00作业1到达,占有资源并调入主存运行. 8: 20作业2和3同时到达,但作业2因分不到打印机,只能在后备队列等待.作业3资源满足,可进主存运行,并与作业1平分CPU ...
- 12-1 上午mysql 基本语句
create table test( code varchar(20) primary key, name varchar(20)); 关键字primary key 主键非空 not nullfore ...
- 0527 python 基础01
折行的处理 \>>> print "hi \... hello Lucy!"hi hello Lucy! 自然字符串,字符串加上r或R前缀指定>>&g ...
- document对象获取例子
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
- python 函数动态参数,名称空间,global,nonlocal
##################################总结######################################动态参数 *args:位置参数动态传参,接收到的是元 ...
- Hibernate进行对象的增删改查
首先我们看看hibernate手动配置步骤 (这个了解一点就可以了,以后是不会自己全部手动配置的) 1. 创建WEB项目 2 下载hibernate-release-4.3.11.F ...
随机推荐
- 支付宝小程序开发——H5跳转到小程序(获取小程序页面的链接)
前言: 这个问题支付宝小程序官方文档并没有专门说明,钉钉群的官方技术支持给了个开发者社区的帖子,详见:如何跳转小程序. 如果配置的页面没有参数还好,不会出问题,如果有参数,很可能配出来的链接无法正常获 ...
- MySQL语句和命令大全
前言 这里记录的是这两年学习工作过程中遇到的常用的 MySQL 语句和命令,部分是网上收集来的,出处已经不记得了,这里先谢过这些大佬.本文包括常见 SQL 语句,还有部分运维语句和命令,没有做详细的说 ...
- WebGL学习笔记(十四):一些零碎的记录
HUD和Billboard 这两个名词都指向同一种东西,即始终面向摄像机的面片,该技术在游戏中大量使用,比如UI的绘制.模型头顶的名称和血条等等都需要使用到. 交换缓冲区 在PC上使用的OpenGL开 ...
- Better ultra_simple for Slamtec RPLIDAR on Linux
Improved the ultra_simple program to visualize the samples with GLUT on Linux, tested with Slamtec R ...
- static和export有什么关系
export default class Test{ public static a = 1; public static sayHello(){ } } export module Test{ ex ...
- ireport5.6.0分组显示
一,ireport中分组 二,java调用实现分组 一,ireport中分组: 1,新建模板文件,纸张随意,名称随意,路径随意 2,连接要分组的数据源 3,添加测试表和数据 CREATE TABLE ...
- TensorFlow 8 bit模型量化
本文基本参考自这篇文章:8-Bit Quantization and TensorFlow Lite: Speeding up mobile inference with low precision ...
- YII2框架集成go!aop
AOP实践:YII2框架本身拥有一个功能,叫做行为.它可以动态的为当前的类附加额外的功能,但这种功能在代码层级结构是静态的,有侵入性的. 下面以YII2框架集成go!aop库为例,介绍在YII2中如何 ...
- vim、vi 快捷键
普通模式 移动光标 nj.nk 上下移动n行 nb.nw 前后移动n个单词 nh.nl 左右移动n个字符 L 移到屏幕的最后一行 M 移到屏幕的中间一行 H 移到屏幕的第一行 nG 移到文件第n行 G ...
- GraphQL&DSL&API网关
车联网服务non-RESTful架构改造实践 导读 在构建面向企业项目.多端的内容聚合类在线服务API设计的过程中,由于其定制特点,采用常规的restful开发模式,通常会导致大量雷同API重复开 ...