1、引入属性访问控制+property

2、引入继承与派生的概念来减少代码冗余

注意:要满足什么"是"什么的关系,不满足"是"的关系不要去继承

import uuid
import pickle
import os class Save:
def save(self):
dir_path = f'{self.__class__.__name__}'
if not os.path.exists(dir_path):
os.mkdir(dir_path)
with open(f'{dir_path}/{self.id}','wb') as f:
pickle.dump(self,f)
def select(self):
dir_path = f'{self.__class__.__name__}'
if not os.path.exists(dir_path):
os.mkdir(dir_path)
with open(f'{dir_path}/{self.id}', 'rb') as f:
return pickle.load(f)
# 学校类
class School(Save):
#校区的名字:如"老男孩上海校区"
#校区的地址:如"上海虹桥"
def __init__(self,name,area):
self.name = name
self.area = area
self.id = uuid.uuid4()
self.classlist = []
self.save()
#校区创建完毕后,可以为每个校区创建班级
def choose_class(self,class_name):
scl_obj = SchoolClass(class_name,self.name)
self.classlist.append(scl_obj.id)
self.save() # 教室类
class SchoolClass(Save):
#班级名字
#班级所在校区
def __init__(self,name,campus):
self.id = uuid.uuid4()
self.name = name
self.campus = campus
self.course_list = []
self.save()
#班级创建完毕后,可以为每个班级关联课程
def choose_course(self,course_name,circle,price):
cou_obj = Course(course_name,circle,price)
self.course_list.append(cou_obj.id)
self.save()
# 课程类
class Course(Save):
#课程名字
#课程周期
#课程价格
def __init__(self,cou_name,circle,price):
self.course_name = cou_name
self.id = uuid.uuid4()
self.circle = circle
self.price = price
self.save()
# 学生类
class Student(Save):
def __init__(self,s_school,stu_name,age,sno,gender):
#学生的学校
#学生的姓名
#学生的年龄
#学号
#学生的性别
self.id = uuid.uuid4()
self.student_school = s_school
self.student_name = stu_name
self.student_age = age
self.student_sno = sno
self.student_gender = gender
self.save()
#学生创建完毕后,学生可以选择班级
def choose_class(self,class_name):
self.class_name = class_name
self.save()
# 老师类
class Teacher(Save):
def __init__(self,t_name,t_age,salary,level):
#老师的名字
#老师的年龄
#老师的薪资
#老师的等级
self.id = uuid.uuid4()
self.teacheer_name = t_name
self.teacheer_age = t_age
self.teacheer_salary = salary
self.teacheer_level = level
self.save()
#老师创建完毕后,可以为学生打分
def student_grade(self,student_obj,grade):
student_obj.grade = grade
self.save() # 创建学校对象
school_obj = School('老男孩','上海') # 创建班级对象
school_obj.choose_class('脱产14期') print(school_obj.__dict__)

day29 作业的更多相关文章

  1. Day29作业及默写

    作业: 1\ 默写 黏包协议 2\ 上传大文件(文件\视频\图片) 3\ 和你的同桌调通 从你的计算机上传一个视频到你同桌的电脑上 4\ 进阶 : 带上登录 Server #Server #!/usr ...

  2. day29作业

    作业 写一个基于TCP协议套接字,服务端实现接收客户端的连接并发. 基于多线程实现 # server.py import socket from threading import Thread def ...

  3. python 全栈开发,Day29(昨日作业讲解,模块搜索路径,编译python文件,包以及包的import和from,软件开发规范)

    一.昨日作业讲解 先来回顾一下昨日的内容 1.os模块 和操作系统交互 工作目录 文件夹 文件 操作系统命令 路径相关的 2.模块 最本质的区别 import会创建一个专属于模块的名字, 所有导入模块 ...

  4. python 作业

    Linux day01 计算机硬件知识整理 作业要求:整理博客,内容如下 编程语言的作用及与操作系统和硬件的关系 应用程序->操作系统->硬件 cpu->内存->磁盘 cpu与 ...

  5. python10作业思路及源码:类Fabric主机管理程序开发(仅供参考)

    类Fabric主机管理程序开发 一,作业要求 1, 运行程序列出主机组或者主机列表(已完成) 2,选择指定主机或主机组(已完成) 3,选择主机或主机组传送文件(上传/下载)(已完成) 4,充分使用多线 ...

  6. SQLServer2005创建定时作业任务

    SQLServer定时作业任务:即数据库自动按照定时执行的作业任务,具有周期性不需要人工干预的特点 创建步骤:(使用最高权限的账户登录--sa) 一.启动SQL Server代理(SQL Server ...

  7. 使用T-SQL找出执行时间过长的作业

        有些时候,有些作业遇到问题执行时间过长,因此我写了一个脚本可以根据历史记录,找出执行时间过长的作业,在监控中就可以及时发现这些作业并尽早解决,代码如下:   SELECT sj.name , ...

  8. T-SQL检查停止的复制作业代理,并启动

        有时候搭建的复制在作业比较多的时候,会因为某些情况导致代理停止或出错,如果分发代理时间停止稍微过长可能导致复制延期,从而需要从新初始化复制,带来问题.因此我写了一个脚本定期检查处于停止状态的分 ...

  9. Python09作业思路及源码:高级FTP服务器开发(仅供参考)

    高级FTP服务器开发 一,作业要求 高级FTP服务器开发 用户加密认证(完成) 多用户同时登陆(完成) 每个用户有不同家目录且只能访问自己的家目录(完成) 对用户进行磁盘配额,不同用户配额可不同(完成 ...

随机推荐

  1. getline使用问题

    1.输入string string s1; getline(cin,s1); cin>>s1; //注意cin遇到空格会终止,而getline不会 2.关于吞回车问题 输入n后要记得吞回车 ...

  2. UDF_表值函数与标量函数的区别_分割字符串成单个的字符并返回表(插入到表中)

    UDF_区别_分割字符串成单个的字符并返回表(插入到表中) /* SQL表值函数和标量值函数的区别 实验环境:SQL Server 2014,参考maomao365有改编 在sqlserver中存储过 ...

  3. Vugen使用技巧

    调整各种选项的超时时间

  4. map处理:map(str,[1,2,3,4,5,6])

    #map(s1,s2)传入两个参数,s1是对该Iterable每个参数做处理的参数,s2是该Iterable print(list(map(str,[1,2,3,4,5,6]))) #map()传入的 ...

  5. MQ系列(1)——rabbitMQ简介

    前文我们学习了 MQ的相关知识,现在我们来学习一下实现了AMQP协议的 rabbitMQ 中间件.rabbitMQ 是使用 erlang 语言编写的中间件(erlang之父 19年4月去世的,很伟大一 ...

  6. 宝塔面板搭载yii2.0项目关于open_basedir报错解决办法

    昨天配置完宝塔的lamp后,然后把原本的yii项目放上去,发现出现三个报错,就是大概  require openssl之类的三个错误 然后去宝塔的界面里去配置了一个端口,然后再去阿里云上开放这个端口 ...

  7. CVE-2018-12613 phpmyadmin文件包含getshell连载(三)

    这是phpmyadmin系列渗透思路的第三篇文章,前面一篇文章阐述了通过慢查询日志getshell,本文将通过文件包含漏洞展开讨论 #001 影响版本 Phpmyadmin 4.8.0/4.8.0.1 ...

  8. Zookeeper客户端Apache Curator

    本文不对Zookeeper进行介绍,主要介绍Curator怎么操作Zookeeper. Apache Curator是Apache ZooKeeper的Java / JVM客户端库,Apache Zo ...

  9. Tensorflow实现神经网络的前向传播

    我们构想有一个神经网络,输入为两个input,中间有一个hidden layer,这个hiddenlayer当中有三个神经元,最后有一个output. 图例如下: 在实现这个神经网络的前向传播之前,我 ...

  10. spring boot actuator端点高级进阶metris指标详解、git配置详解、自定义扩展详解

    https://www.cnblogs.com/duanxz/p/3508267.html 前言 接着上一篇<Springboot Actuator之一:执行器Actuator入门介绍>a ...