不懂就问

1009学习的面向对象编程

  1. 对于类有些不理解
    其中 __init__方法到底是什么

还有self 又是什么

  1. 鸭子类型是什么
    --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()

原文地址:https://www.cnblogs.com/fwzzz/p/11644674.html