zoukankan      html  css  js  c++  java
  • python基础-面向对象编程之组合

    面向对象编程之组合

    定义:一个对象中拥有另一个或其他多个对象的属性和方法

    作用:减少代码的冗余,降低耦合度

    关于耦合度的说明
    耦合:通俗地讲,就是相互作用,相互影响的意思
    耦合度越高,程序的可扩展性越低;
    耦合度越低,程序的可扩展性越高。
    

    组合和继承的区别

    组合:对象与对象之间的关系,可理解成“什么有什么”的关系

    继承:类与类之间的关系,子类继承父类属性,“从属”关系,即“什么是什么”的关系。

    class Course:
        """课程类"""
    
        def __init__(self, course_name, course_price, course_duration):
            """课程名称,课程价格,课程时长"""
            self.course_name = course_name
            self.course_price = course_price
            self.course_duration = course_duration
    
        def show_course(self):
            """输出课程信息"""
            print(f"""
            ========课程信息========
            课程名称:{self.course_name}
            课程价格:{self.course_price}
            课程时长:{self.course_duration}
            """)
    
    
    class Student:
        """学生类"""
    
        def __init__(self, name, age, gender):
            """姓名,年龄,性别"""
            self.name = name
            self.age = age
            self.gender = gender
            self.course_list = []
    
        def add_course(self, course_obj):
            """增加课程"""
            self.course_list.append(course_obj)
            # 使用了Course类的course_name 属性
            print(f"课程{course_obj.course_name}添加成功!")
    
        def show_all_course(self):
            """显示学生课程表中所有课程信息"""
            for course in self.course_list:
                # 使用了Course类的show_course() 方法
                course.show_course()
    
    
    # 创建学生对象
    stu = Student("dawn", 27, "男")
    # 创建课程对象
    python_obj = Course("python", 28888, 6)
    go_obj = Course("go", 77777, 5)
    
    # 将课程添加到学生对象中
    stu.add_course(python_obj)
    stu.add_course(go_obj)
    
    # 打印学生中所有的课程表信息
    stu.show_all_course()
    

    输出结果

    课程python添加成功!
    课程go添加成功!
    
            ========课程信息========
            课程名称:python
            课程价格:28888
            课程时长:6
            
    
            ========课程信息========
            课程名称:go
            课程价格:77777
            课程时长:5
    
  • 相关阅读:
    Nginx 启动错误 Failed to read PID from /run/nginx.pid
    CentOS7 下 nginx 无法加载 Django 静态文件的问题
    SSD + 机械硬盘装 CentOS 分区的问题
    CentOS7 单机维护模式
    编译安装 redis 6.2.1
    谷歌师兄刷题笔记
    我用 DCL 写出了单例模式,结果阿里面试官不满意!
    红黑树杀人事件始末
    头条二面:详述一条 SQL 的执行流程
    jvisual远程 springBoot项目
  • 原文地址:https://www.cnblogs.com/xiaodan1040/p/11946757.html
Copyright © 2011-2022 走看看