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 ...
随机推荐
- 【C#】使用C# 读取Http的Post数据
private string Post(string num) { Encoding myEncoding = Encoding.GetEncoding("gb2312"); // ...
- 连接ftp服务器 JDK 1.7
import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.F ...
- C++内存管理3-探讨C++内存和回收
1 C++内存对象大会战 如果一个人自称为程序高手,却对内存一无所知,那么我可以告诉你,他一定在吹牛. 用C或C++写程序,需要更多地关注内存,这不仅仅是因为内存的分配是否合理直接影响着程序的效率和性 ...
- VSCode调试data层时自身的一个bug
使用VSCode在pytorch下进行调试有的时候会遇到下面这个错误: E00037.: Exception escaped from start_client Traceback (most rec ...
- SpringBoot配置热部署
1.spring-boot-devtools 在pom中直接引入依赖 <dependency> <groupId>org.springframework.boot</gr ...
- LODOP常见问题连接(含常见小问答博文)
问答大全 纸张打印机 注册 table表格 clodop测试地址 字体 超文本 行间距.字间距 clodop回调函数 条码 页眉页脚 SET……STYLEA 水平居中 简短排查 提示报错 慢进度条 套 ...
- C++ & OpenCV 零散学习总结
OpenCV中Mat基本用法: Mat类 (Matrix的缩写) 是OpenCV用于处理图像而引入的一个封装类.从功能上讲,Mat类在IplImage结构的基础上进一步增强,并且,由于引入C++高级编 ...
- lnmp+discuz使用redis缓存(待进一步研究)
一直说Redis.Redis缓存.一直不清楚怎么用.于是花点时间研究了一下,但是还没搞懂.先把大概内容记录一下,待后续继续学习 1.首先部署lnmp环境,这个我的博客有些,请自行搜索 2.给php添加 ...
- windos server2012安装.net core 2.2问题
服务器是:WinServer 2012 Standard X64 版本 服务器是:WinServer 2012 DataCenter R2 X64 版本.几个老站点本身正常.如题:.Net Core ...
- python 的技巧
pi = 0 n = 100 for k in range(n): pi+=1/pow(16,k)*(\ #一行不够写或不易读时用\,则多行与一行一样 4/(8*k+1)-2/(8*k+4)-\ 1/ ...