4.8 ---オブジェクト指向演習2

 

書き換え要件:

#1、オブジェクト指向のコード記述された拡張Studentクラスに基づいて、
#2を添加し、シリアル化操作デシリアライズされた
IDを使用してオブジェクト間の関連付け、#3
のファイルから、#4に対応するIDファイルで見つけることができ、次いで、トランス学校、クラス、コース、学生オブジェクトの実行をシリアル化

 

クラス定義部:

輸入UUID
 輸入ピクルス

クラス学校:
    school_name = " 老男孩" 

    デフ __init__ (自己、ニックネーム、アドレス):
        self.nickname = ニックネーム
        self.address = アドレス
        self.classes = [] 
        self.id = uuid.uuid4()

    DEF relate_class (自己、CLASS_OBJ):
        self.classes.append(class_obj.id)

    DEF (自己)保存:
        オープン(Fと" DB \学校\\ {self.id} .pickle "、MODE = " WB" )Fとして:
            pickle.dump(自己、F)


    DEF :tell_class(自己)
         プリント(self.nickname.center(50、" = " ))
         のために CLASS_ID self.classes:
            オープンと(F " DB \クラス\ \ {CLASS_ID} .pickle "MODE = " RB " )Fとして:
                CLASS_OBJ = pickle.load(F)
            class_obj.tell_course()

クラスクラス:
     デフ __init__ (自己、名):
        self.name = 
        self.course= なし
        self.student = [] 
        self.id = uuid.uuid4()
        self.school = なし

    DEF relate_course(自己、course_obj):
        self.course = course_obj.id 
        
    DEF relate_student(自己、student_obj):
        self.student.append (student_obj.id)

    DEF (自己)保存:
        とオープン(F " DB \クラス\\ {self.id} .pickle "、MODE = " WB " Fとして):
            pickle.dump(自己、F)

    デフtell_course(自己):
         印刷"%-10s "%のself.name、端= "  " 
        とオープン(F " DB \コース\\ {self.course} .pickle "MODE = " RB " )Fとして:
            コース = pickle.load(F)
        course.tell_info()


クラスコース:
     デフ __init__ (自己、名前、時間、コスト):
        self.name = 名前
        self.time = 時間
        self.cost = コスト
        self.id = uuid.uuid4()

    デフtell_info(自己):
         プリント" 课程名:% - 10S时长:%sの、费用:%sの"(self.name、self.time、self.cost))

    デフ(自己)割引:
        オープンと(F もちろんデシベル\ \\ { self.id} .pickle "モード= " WB :Fなど)
            pickle.dump(自己、F)


クラスの学生:
     デフ __init__ (自己、名前、年齢、性別、NUM):
        self.name = 名前
        self.age = 年齢
        self.gender = 性別
        self.num = NUM 
        self.class_obj = なし
        self.id = uuid.uuid4()

    DEF tell_info(自己):
         印刷" 姓名:% - 5S年龄:%S性别:%S、学号:% - 5S "(self.name、self.age、自己.gender、self.num))

    デフchose_class(自己、CLASS_OBJ):
        self.class_obj = class_obj.id 
        class_obj.student.append(self.id)

    デフ自己(保存):
        オープン(fのDB \学生\\ { self.id} .pickle "MODE = " WB " Fとして):
            pickle.dump(自己、F)

    DEF tell_class(自己):
         プリント(F "学生【{self.name}】班级信息" .center(50、" = " ))
        とオープン(F " DB \クラス\\ {self.class_obj} .pickle "MODE = " RB " Fとして):
            CLASS_OBJ = pickle.load(F)
        class_obj.tell_course()

 

部分の例:

オブジェクトのインスタンス化        
STU1 =学生(" ジル"、18、" マル"、1118 
、S1 =学校(" 豚キャンパス"" 上海徐匯区" 
、C1 =クラス(" 豚・ファウンデーション・クラス" 
C2 =クラス(" 豚アドバンスドクラス" 
course1 =コース、(" 豚の自己修養"" 6ヶ月"、20000 
course2 =コース、("10魚のスタイルをキャッチ" 5ヶ月" 18,000の、

関連する
s1.relate_class(C1)
s1.relate_class(C2)
c1.relate_course(course1)
c2.relate_course(course2) 

学生が授業を選択
stu1.chose_class(C1) 

ファイルに
s1.save ()
c1.save()
c2.save()
course1.save()
course2.save()
stu1.save() 

ビュー
s1.tell_class()
c1.tell_course()
stu1.tell_class()

 

おすすめ

転載: www.cnblogs.com/zhubincheng/p/12663199.html