# 定义一个学生类
# 要求:
# 1.属性包括学生,学号以及语数英三科的成绩
# 2.能够设置学生某科目的成绩
# 3.能够打印该学生的所有科目的成绩
class Student:
def __init__(self, name, student_id):
self.name = name
self.student_id = student_id
self.grades = {"语文": 0, "数学": 0, "英语": 0}
# 设置学生某科目的成绩
def set_grade(self, course, grade):
if(course in self.grades):
self.grades[course] = grade
# 打印该学生的所有科目的成绩
def print_grades(self):
print(f"学生{self.name},学号{self.student_id}的成绩是:")
for course, grade in self.grades.items():
print(course, grade)
guang = Student("小光", "10086")
print(guang.name), print(guang.student_id)
guang.set_grade("语文", 95)
guang.set_grade("数学", 92)
guang.set_grade("英语", 98)
guang.print_grades()
//类的继承:
类紧接着加一个括号,括号里又是一个类名,表示定义的这个类是括号里的这个类的子类,括号里的类是父类
# super()方法继承父类的构造函数
# 类继承练习:人力系统
# 员工分为两类:全职员工FullTimeEmployee、兼职员工PartTimeEmployee。
# 全职和兼职都有"姓名name"、"工号id"属性,
# 都具备"打印信息print_info”(打印姓名、工号)方法。
# 全职有"月薪monthly_salary"属性,
# 兼职有"日薪daily_salary"属性、"每月工作天数work_days"的属性。
# 全职和兼职都有"计算月薪calculate_monthly_pay"的方法,但具体计算过程不一样。
# 父类
class employee:
def __init__(self, name, id):
self.name = name
self.id = id
def print_info(self):
print(f"姓名:{self.name}, 工号:{self.id}")
# 类紧接着加一个括号,括号里又是一个类名,表示定义的这个类是括号里的这个类的子类,括号里的类是父类
class FullTimeEmployee(employee):
def __init__(self, name, id, monthly_salary):
# super()方法继承父类的构造函数
super().__init__(name, id)
self.monthly_salary = monthly_salary
def calculate_monthly_pay(self):
return self.monthly_salary
class PartTimeEmployee(employee):
def __init__(self, name, id, daily_salary, work_days):
# super()方法继承父类的构造函数
super().__init__(name, id)
self.daily_salary = daily_salary
self.work_days = work_days
def calculate_monthly_pay(self):
return self.work_days * self.daily_salary
ming = FullTimeEmployee("小明", "10000", 12000)
hua = PartTimeEmployee("小华", "10001", 350, 20)
ming.print_info()
hua.print_info()
print(ming.name, " 工号为:", ming.id, " 工资为:", ming.calculate_monthly_pay())
print(hua.name, "工号为:", hua.id, " 工资为:", hua.calculate_monthly_pay())