4.8 --- 객체 지향 연습 2

 

재 작성 요구 사항 :

객체 지향 코드 기록 팽창 학생 클래스를 기반 # 1, 
# 2를 첨가하고, 동작 직렬화되어야 직렬화 된
# 3의 ID를 이용하여 오브젝트 간의 관계
# 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) 

    데프 (자동) 저장 : 
        개방 (F와 " DB \ 학교 \\ {self.id} .pickle " 모드 = " WB" )로서 F : 
            pickle.dump (자기, F) 


    DEF tell_class (자기)
         인쇄 (self.nickname.center (50 " = " ))
         에 대한 CLASS_ID 에서 : self.classes 
            열기 (F와 " DB \ 클래스 \ \ {CLASS_ID} .pickle " 모드 = " 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) 

    DEF 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 (자기) :
         인쇄( " 课程名: % - 10 초时长: % S,费用%의 " % (self.name, self.time, self.cost)) 

    데프 (자동) 저장 : 
        개방과 (F " 물론 DB \ \\ { 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 () 

    데프 tell_info (자동) :
         인쇄 ( " 姓名: % - 5 초年龄%의性别: % S,学号: % - 5 초 " % (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 = 코스, ( "열 물고기 스타일을 잡아라 " ," 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