1 #!/usr/bin/env python3 2 # coding=utf-8 3 # Version:python3.6.1 4 # Project:practice 5 # File:Person.py 6 # Data:2020/7/11 15:58 7 # Author:LGSP_Harold 8 9 """ 10 自定義兩個類Person和Student,且Student繼承自Person。Person 11 類主要描述人的姓名和性別兩大基本特徵。Student類除了保持父類的 12 基本屬性之外還具有分數、主修兩個公有屬以及一個私有屬性(學 13 號)。請根據上述的基本說明,對stu和stu_2兩個對象的信息進行綜 14 合展示。 15 16 任務 17 1、自定義Person類,並重寫其構造(初始化)方法__init__( ),將na 18 me和gender參數賦值給實例對象的屬性 19 2、自定義實例方法speak( ),功能:打印“hello ! 我是xxx”。relati 20 on( )方法主要是佔位作用,無其他實質性功能 21 3、自定義Student類,繼承自Person類,並重寫其構造(初始化)方 22 法__init__( ),name、gender參數通過調用父類的構造函數進行賦 23 值,score和major通過子類重寫的 __init__( )進行賦值。 24 4、自定義實例方法speak( ),功能:打印 '我的學號爲xxxxxxxxxx, 25 很高興認識大家'; 26 5、自定義實例方法identify_stu( ),功能:判斷Student對象的學 27 號。若學號爲2018014002,則打印‘我的分組已經完成’,反之則 28 打印‘請稍後,馬上爲你自動分組’; 29 6、自定義實例方法set_num( new_num),功能:將學號重寫設置爲n 30 ew_num; 31 7、自定義實例方法relation( ),功能:判斷Student是否爲Person的 32 子類。若成立,則打印‘我的父類是Person’,反之則打印‘父類正 33 在查詢中······’ 34 8、初始化實例對象stu和stu_2,並根據上述效果圖調用對應方法 35 任務提示 36 Person類中的實例方法relation( )爲佔位功能時,其方法體可用pass語句代替 37 """ 38 39 40 class Person(object): 41 42 def __init__(self, name, gender): 43 self.name = name 44 self.gender = gender 45 46 def speak(self): 47 print('我是{0}'.format(self.name)) 48 49 def relation(self): 50 pass 51 52 53 class Student(Person): 54 55 def __init__(self, name, gender, score, major, number=2018014002): 56 super().__init__(name, gender) 57 self.score = score 58 self.major = major 59 self.__number = number 60 61 def speak(self): 62 super(Student, self).speak() 63 print('我的學號{0}'.format(self.__number)) 64 65 def identify_stu(self): 66 if self.__number == 2018014002: 67 print('分組已經完成') 68 else: 69 print('馬上分組') 70 71 def set_num(self, new_num): 72 self.__number = new_num 73 74 def relation(self, class_son, class_father): 75 if issubclass(class_son, class_father): 76 print('父類爲:Person') 77 else: 78 print('父類查詢中') 79 80 81 if __name__ == '__main__': 82 stu = Student('Jim', '男', 99, '數學') 83 stu.speak() 84 stu.identify_stu() 85 stu.relation(Student, Person) 86 print('*'*18) 87 stu_2 = Student('Leslie', '男', 81, '英語') 88 stu_2.set_num(2018040625) 89 stu_2.speak() 90 stu_2.identify_stu()