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)
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()
3、什么是新式类,什么是经典类,二者有什么区别?什么是深度优先,什么是广度优先?
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、抽象老师类与学生类得到父类,用继承的方式减少代码冗余
解答
1、
1 1 1
# 全部继承了父类中的x
1 2 1
# Child1 类中添加变量 x = 1, Child1优先搜索自己的变量
3 2 3
# 父类中 Child2 继承父类的变量,Child1优先搜索自己的变量
2、
G
D
A
B
F
C
B
D
A
3、
新式类:
继承了object的类以及该类的子类,都是新式类
Python3中所有的类都是新式类
经典类:
没有继承object的类以及该类的子类,都是经典类
只有Python2中才有经典类
4、
import time
import hashlib
import pickle
class Parent:
def __init__(self, name, gender, age):
self.name = name
self.gender = gender
self.age = age
class Student(Parent):
def __init__(self,name, gender, age):
super().__init__(name, gender, age)
class Teacher(Parent):
def __init__(self, name, gender, age, level, salary):
super().__init__(name, gender, age)
self.level = level
self.salary = salary
def create_id(self):
t = time.time()
md5 = hashlib.md5
info = name + gender + str(age) + level + salary
md5.update(t.encode(‘utf_8‘))
md5.update(info.encode(‘utf_8‘))
id = md5.hexdigest()
return id
def tell_info(self):
print(self.id, self.name, self.gender, self.age, self.level, self.salary)
def save(self):
with open(f‘{self.id}‘, ‘wb‘) as f:
pickle.dump(self,f)
def get_obj_by_id(self, id):
return pickle.load(open(id, ‘rb‘))
原文:https://www.cnblogs.com/binyuanxiang/p/11649964.html