# 作业一:自己试验一下菱形问题下的属性查找顺序
class G(object):
def test(self):
print('from G')
class E(G):
def test(self):
print('from E')
class F(G):
def test(self):
print('from F')
class B(E):
def test(self):
print('from B')
class C(F):
def test(self):
print('from C')
class D(G):
def test(self):
print('from D')
class A(C, B, D):
pass
print(A.mro())
# [<class '__main__.A'>, <class '__main__.C'>,
# <class '__main__.F'>, <class '__main__.B'>,
# <class '__main__.E'>, <class '__main__.D'>,
# <class '__main__.G'>, <class 'object'>]
# 作业二:在昨天作业的基础之上
# # 1、引入属性访问控制+property
# # 2、引入继承与派生的概念来减少代码冗余
# 注意:要满足什么"是"什么的关系,不满足"是"的关系不要去继承
import uuid
import pickle
class N_id:
uuid = uuid.uuid4()
def __init__(self,uuid,name):
self.n_id = uuid
self.name = name
def save(self):
with open(f"{self.n_id}{self.name}.pkl", "w", encoding="utf-8")as f:
pickle.dump(self, f)
def open(self):
with open(f"{self.n_id}{self.name}.pkl", "r", encoding="utf-8")as f:
data = pickle.load(f)
print(data)
class School(N_id):
re_name = "老男孩培训"
uuid = uuid.uuid4()
def __init__(self,address,uuid,name):
self.address = address
N_id.__init__(self,uuid,name)
self.class_lis = []
def class_act(self,class_obj):
self.class_lis.append(f"{class_obj.n_id}{class_obj.name}")
@property
def show_shcool(self):
print(self.name)
for i in self.class_lis:
with open(f"{i}.pkl","w",encoding="utf-8")as f:
data = pickle.load(f)
print(data)
class Class(N_id):
def __init__(self,name):
N_id.__init__(self,uuid,name)
self.course_lis = None
def course_act(self,course_obj):
self.course_lis = f"{course_obj.n_id}{course_obj.name}"
@property
def show_class_info(self):
print("%s"%self.name,end="")
with open(f"{self.course_lis}.pkl", "r", encoding="utf-8")as f:
data = pickle.load(f)
print(data)
class Course(N_id):
def __init__(self,uuid,name,date,price):
N_id.__init__(self,uuid,name)
self.date = date
self.price = price
@property
def show_course(self):
print("名字%s,周期%s,价格%s"%(self.name,self.date,self.price))
class Student(N_id):
def __init__(self,uuid,name,age,id,sex):
N_id.__init__(self,uuid,name)
self.age = age
self.id = id
self.sex = sex
self.class_choose = None
self.score = None
def choose(self,class_obj):
self.class_obj = class_obj.n_id
class Teacher(N_id):
def __init__(self,uuid,name,age,salaery,level):
N_id.__init__(self,uuid,name)
self.age = age
self.salaery = salaery
self.level = level
self.score = None
def score_stu(self,score,stu_obj):
self.score = score
stu_obj.score = self.score