作业_4.9

import pickle
import uuid

class People(object):
    school_name = "oldboy"

    def __init__(self, name, age, gender):
        self.__name = name
        self.__age = age
        self.__gender = gender
        self.u = uuid.uuid4()

    @property
    def name(self):
        return self.__name

    @name.setter
    def name(self, name):
        if type(name) is not str:
            print('必须传入str类型')
            return
        self.name = name

    @property
    def age(self):
        return self.__age

    @age.setter
    def age(self, age):
        if type(age) is not int:
            print('必须传入int类型')
            return
        self.age = age

    @property
    def gender(self):
        return self.__gender

    @gender.setter
    def gender(self, gender):
        if type(gender) is not str:
            print('必须传入str类型')
            return
        self.gender = gender

    # 保存数据
    def save(self):
        with open("flies.pkl".format(self.u), "wb") as f1:
            pickle.dump("flies.pkl", f1)
        with open("flies.pkl".format(self.u), "rb") as f2:
            pickle.load(f2)


# 定义一个学校类
class School(object):
    # 定义校区名 与 地址 教室列表
    def __init__(self, nickname, addr):
        self.nickname = nickname
        self.addr = addr
        self.u = uuid.uuid4()
        self.classes = []

    # 定义教室
    def related_class(self, class_obj):
        self.classes.append(class_obj)

    # 定义打印教室信息
    def tell_class(self):
        print(self.nickname.center(20, "-"))
        for class_obj in self.classes:
            class_obj.tell_course()


# 定义一个教室类
class Class(object):
    # 定义教室名字
    def __init__(self, name):
        self.name = name
        self.u = uuid.uuid4()
        self.course = None

    # 定义课程
    def related_course(self, course_obj):
        self.course = course_obj

    # 打印课程信息
    def tell_course(self):
        print("%s" % self.name, end=" ")
        self.course.tell_info()

    # 保存数据
    def save(self):
        with open("flies.pkl".format(self.u), "wb") as f1:
            pickle.dump("flies.pkl", f1)
        with open("flies.pkl".format(self.u), "rb") as f2:
            pickle.load(f2)


# 定义一个课程类
class Course(object):
    # 定义课程名字 周期
    def __init__(self, name, period, price):
        self.name = name
        self.period = period
        self.price = price
        self.u = uuid.uuid4()

    def tell_info(self):
        print("课程名称:%s 课程周期:%s 课程价格:%s" % (self.name, self.period, self.price))

    # 保存数据
    def save(self):
        with open("flies.pkl".format(self.u), "wb") as f1:
            pickle.dump("flies.pkl", f1)
        with open("flies.pkl".format(self.u), "rb") as f2:
            pickle.load(f2)


# 定义一个学生类
class Student(People):
    def __init__(self, number, name, age, gender):
        People.__init__(self, name, age, gender)
        self.number = number


    def tell_student(self):
        print("学号:%d 姓名:%s 年龄:%d 性别:%s " %
              (self.number, self.name, self.age, self.gender))


class Teacher(People):
    def __init__(self, name, age, gender, salary, level):
        People.__init__(self, name, age, gender)
        self.__salary = salary
        self.__level = level

    @property
    def salary(self):
        return self.__salary

    @salary.setter
    def salary(self, salary):
        if type(salary) is not int:
            print('必须传入int类型')
            return
        self.salary = salary

    @property
    def level(self):
        return self.__level

    @level.setter
    def level(self, level):
        if type(level) is not int:
            print('必须传入int类型')
            return
        self.level = level

    def score(self):
        print('老师名字:%s 老师年龄:%d ''老师性别:%s 老师工资:%d 老师等级:%d '
              % (self.name, self.age, self.gender, self.salary, self.level))

# 创建学校
school_obj1 = School('老男孩魔都校区', '上海')
school_obj2 = School('老男孩帝都校区', '北京')
# School.save(school_obj1)
# School.save(school_obj2)

# 创建班级
class_ojb1 = Class("脱产14")
class_ojb2 = Class("脱产15")
school_obj1.related_class(class_ojb1)
school_obj2.related_class(class_ojb2)
Class.save(class_ojb1)
Class.save(class_ojb2)

# 创建课程
course_obj1 = Course("python", "6", "20000")
course_obj2 = Course("linux", "5", "18000")

class_ojb1.related_course(course_obj1)
class_ojb2.related_course(course_obj2)

school_obj1.tell_class()
school_obj2.tell_class()
Course.save(course_obj1)
Course.save(course_obj2)

# 创建学生
stu1 = Student(0, "kk", 12, "")
stu2 = Student(1, "cc", 11, "")
stu1.tell_student()
stu2.tell_student()
Student.save(stu1)
Student.save(stu2)

# 创建老师
tea = Teacher("egon", 18, "male", 3000, 10)
Teacher.score(tea)

猜你喜欢

转载自www.cnblogs.com/zhenghuiwen/p/12670242.html
4.9