1009学习的面向对象编程
- 对于类有些不理解
其中 __init__方法到底是什么
还有self 又是什么
- 鸭子类型是什么
--1011
组合的练习
不熟悉
'''
选课系统需求:
1.学生类,老师类, 学生和老师都有课程属性, 每一门课程都是一个对象.
课程: 课程名字,课程周期,课程价钱
2.学生和老师都有选择课程的功能, 还有打印所有课程的功能.
'''
# 定义父类
class people:
def __init__(self,name,age,sex):
self.name = name
self.age =age
self.sex = sex
'''定义选课的方法'''
def add_kecheng(self,course_obj):
'''将选择的课程传入'''
self.course_list.append(course_obj) # self自己的list列表增加传入的课程
'''得到一个老师学生的对象'''
def print_all(self): # (传入当前的老师或学生对象)
'''循环拿到当前对象的课程列表,列表中存放的是一个个的课程对象'''
for course_obj in self.course_list: # 对象的课程列表(之前追加的课程)
'''循环每一个课程对象调用查看课程信息的方法'''
course_obj.get_info() # 获取到的课程对象直接调用其中的打印方法
# 定义老师类
class teach(people):
def __init__(self,name,age,sex):
super().__init__(name,age,sex)
# 学生选课的功能
self.course_list = []
# 定义学生类
class student(people):
def __init__(self,name,age,sex):
super().__init__(name,age,sex)
self.course_list = []
# 定义一个课程类
class Course:
'''定义课程类的名称周期价格'''
def __init__(self,course_name,course_period,course_prize):
self.course_name = course_name
self.course_period = course_period
self.course_prize = course_prize
def get_info(self):
'''打印课程的所有信息'''
print(f'''
课程名称:{self.course_name}
课程周期:{self.course_period}
课程价格:{self.course_prize}
''')
# 实例化老师与学生的对象
tea1 = teach('老师',10,'男性')
stu1 = student('学生',50,'男性')
# 实例化课程的对象
python_obj = Course('python0',6,2.0)
linux_obj = Course('linux',6,1.0)
# 通过老师学生将两门课程对象添加进teach内
'''将整个课程信息实例化的对象传入了add_kecheng方法中
教师类中列表course_list接受课程信息'''
tea1.add_kecheng(python_obj)
tea1.add_kecheng(linux_obj)
'''将保存在tea1中的python获取并使用打印方法'''
# tea1.course_list[0].get_info()
# python_obj.get_info()
'''直接调用查看所有的课程'''
tea1.print_all()