真的没关联起来

1、练习上课作业讲解的面向对象代码,明天默写

2、基于上课作业讲解的面向对象代码,扩写Student类

3、加入序列化与反序列化操作

4、对象之间的关联采用id号

5、可以通过id找到对应的文件,然后从文件中反序列化出执行的学校、班级、课程、学生对象

import pickle
import uuid

class School:
def init(self, name, address):
self.school_name = name
self.school_address = address
self.school_class = []

def related_class(self, class3):
    self.school_class.append(class3)

def tell_school(self):
    print('====================================================')
    print(f'学校名为:{self.school_name}  学校地址为:{self.school_address} ')
    for class3 in self.school_class:
        class3.tell_classes()

school1 = School(‘老男孩帝都校区’, ‘beijing’)
school2 = School(‘老男孩魔都校区’, ‘shanghai’)

class Classes(School):
def init(self, name1, address, name):
School.init(self , name1, address)
self.classes_name = name
self.schedule=[]

def related_schedule(self, schedule):
    self.schedule.append(schedule)

def tell_classes(self):
    print(f'班级名为: {self.classes_name,self.school_name,}')
    for schedule in self.schedule:
        schedule.tell_schedule()

    # self.schedule.tell_schedule()

class1 = Classes(‘老男孩帝都校区’, ‘beijing’ ,‘python’)
class2=Classes(‘老男孩帝都校区’, ‘beijing’,‘linux运维’)

school1.related_class(class1)
school2.related_class(class2)

class Class_Schedule:
def init(self,name,period,price):
self.schedule_name=name
self.period=period
self.price=price
self.student_msg=[]

def related_student_msg(self,msg):
    self.student_msg.append(msg)

def tell_schedule(self):
    print(f'课程名称为: {self.schedule_name}  课程时长为: {self.period} 课程价格为:{self.price}')
    for msg in self.student_msg:
        msg.tell_msg()
    # self.student_msg.tell_msg()

schedule1=Class_Schedule(‘python’,6,21000)
schedule2=Class_Schedule(‘linux’,5,18000)

class1.related_schedule(schedule1)
class2.related_schedule(schedule2)

class Student_Msg:
def init(self,name,age,num,gender):
self.__name=name
self.age=age
self.num=num
self.gender=gender
self.teacher=None
self.id=uuid.uuid4()
self.save_student()
@property
def name(self):
return self.__name
@name.setter
def name(self,val):
if type(val) is not str:
return
self.__name=val
@name.deleter
def name(self):
del self.__name

def related_teacher(self, teacher):
    self.teacher = teacher
def save_student(self):
    dict={
        'name':self.name,
        'age':self.age,
        'num':self.num,
    }
    with open(f'{self.name}.pickle',mode='wb')as f:
        pickle.dump(dict,f)

def read_student(self):
    with open(f'{self.name}.pickle',mode='rb')as f:
        res=pickle.load(f)
        print(res)

def tell_msg(self):
    print(f' 学生姓名:{self.name} 学生年龄:{self.age}  学生学号:{self.num} 学生性别:{self.gender}')
    # self.teacher.tell_teacher()

stu1 = Student_Msg(‘walker1’, 35, 1688, ‘male’)
stu2 = Student_Msg(‘walker2’, 18, 1866, ‘female’)
stu3 = Student_Msg(‘walker3’, 35, 1688, ‘male’)
stu4 = Student_Msg(‘walker4’, 55, 1688, ‘male’)
stu5 = Student_Msg(‘walker5’, 65, 1688, ‘male’)
stu6 = Student_Msg(‘walker6’, 75, 1688, ‘male’)
stu7 = Student_Msg(‘walker7’, 85, 1688, ‘male’)
stu8 = Student_Msg(‘walker8’, 95, 1688, ‘male’)

schedule1.related_student_msg(stu1)
schedule1.related_student_msg(stu2)
schedule1.related_student_msg(stu3)
schedule1.related_student_msg(stu4)
schedule2.related_student_msg(stu5)
schedule2.related_student_msg(stu6)
schedule2.related_student_msg(stu7)
schedule2.related_student_msg(stu8)

print(stu1.name)
stu1.name=‘xxx’
print(stu1.name)
del stu1.name
print(stu1.age)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值