首页 > 其他分享 >组合

组合

时间:2024-01-05 20:33:57浏览次数:21  
标签:__ name 组合 self month def

组合

【一】什么是组合

  • 在一个类中以另外一个类的对象作为数据属性,称为类的组合。

【二】组合的使用

  • 组合与继承都是用来解决代码的重用性问题。
  • 不同的是:
    • 继承是一种“是”的关系,比如老师是人、学生是人,当类之间有很多相同的之处,应该使用继承
    • 而组合则是一种“有”的关系,比如老师有生日,老师有多门课程,当类之间有显著不同,并且较小的类是较大的类所需要的组件时,应该使用组合
  • 目的:解决代码的重用性

举例:

class Course:
    def __init__(self,name,perid,price):
        self.name = name
        self.period = perid
        self.price = price

    def tell_info(self):
        print(f"{self.name}课程周期为{self.period}个月,价格为{self.price}")

class Date:
    def __init__(self,year,month,day):
        self.year = year
        self.month = month
        self.day = day

    def tell_info(self):
        print(f"生日是{self.year}年{self.month}月{self.day}日")

class People:
    school="希望小学"
    def __init__(self,name,sex,age):
        self.name=name
        self.sex=sex
        self.age=age

class Teacher(People):
    def __init__(self,name,sex,age,title,year,month,day):
        self.title=title
        super().__init__(name,sex,age)

        self.birthday=Date(year,month,day)
        self.courses=[]
    def tell_info(self):
        print(f"姓名:{self.name},性别:{self.sex},年龄:{self.age},职称:{self.title}")

python = Course("python",12,19800)
Java=Course("Java",24,29800)
teacher1=Teacher("张三","男",38,"高级讲师",1985,10,10)
teacher1.courses.append(python)
teacher1.courses.append(Java)
for i in teacher1.courses:
    i.tell_info()

【三】组合和继承的区别

  • 组合和继承都是有效地利用已有类的资源的重要方式。但是二者的概念和使用场景皆不同。

  • 继承主要是用来提取所有子类共有的功能的,总结成一个父类通过继承建立了派生类与基类之间的关系,它是一种'是'的关系,比如白马是马,人是动物。当类之间有很多相同的功能,提取这些共同的功能做成基类,用继承比较好,比如老师是人,学生是人

  • 组合就相当于将不同的数据类型,包括八大基本数据类型,包括我们的对象,包括我的类总结到一起,可以在一个类的对象里面调用其他类的对象和方法用组合的方式建立了类与组合的类之间的关系。

标签:__,name,组合,self,month,def
From: https://www.cnblogs.com/banchengyanyu/p/17948024

相关文章

  • 组合
    组合(1)组合的概念在一个类中以另外一个类的对象作为数据属性,称为类的组合。(2)组合的使用组合与继承都是用来解决代码的重用性问题。不同的是:继承是一种“是”的关系,比如老师是人、学生是人,当类之间有很多相同的之处,应该使用继承;而组合则是一种“有”的关系,比如老师有生日......
  • python面向对象之派生、组合、抽象类、反射
    【派生】在子类派生的新方法中如何重用父类的功能?  【组合】(定义) (案例) (组合和继承的区别) 【抽象类】(定义) (案例) 实例化 (总结) 【反射】什么是反射 如何反射 实现反射机制的步骤 解决办法 ......
  • 软件体系结构与设计模式之组合模式
    一.单选题(共4题)(单选题)一个树形文件系统体现了()模式。A.Decorator(装饰)B.Composite(组合)C.Bridge(桥接)D.Proxy(代理)我的答案:B:Composite(组合);(单选题)以下关于组合模式的叙述错误的是()。A.组合模式对叶子对象和组合对象的使用具有一致性B.组合模式可......
  • 【力扣】-39. 组合总和|刷题打卡-JS
    给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。candidates 中的 同一个 数字可以 无限制重复被选取 。如果至少一个......
  • 排列组合中的21种题型和技巧(下)
    排列组合考什么?考的就是技巧!!以及各种技巧的综合应用!技巧16.圆排问题用线排法把n个不同元素放在圆周n个无编号位置上的排列,顺序(例如按顺时钟)不同的排法才算不同的排列,而顺序相同(即旋转一下就可以重合)的排法认为是相同的,它与普通排列的区别在于只计顺序而首位、末位之分,在圆排......
  • Composite 组合模式简介与 C# 示例【结构型3】【设计模式来了_8】
    Composite组合模式简介与C#示例【结构型3】【设计模式来了_8】 阅读目录〇、简介1、什么是组合设计模式?2、优缺点和适用场景一、简单的代码示例二、根据示例代码看结构三、相关模式回到顶部〇、简介1、什么是组合设计模式?一句话解释:  针对树形结构......
  • 组合优化的奥秘:揭示算法奥妙
    1.背景介绍组合优化是一种常见的优化问题,它涉及到寻找一组变量的最佳组合,以满足某种目标函数的要求。这类问题广泛存在于计算机视觉、自然语言处理、机器学习等领域。在这篇文章中,我们将深入探讨组合优化的核心概念、算法原理和实例代码。组合优化问题通常可以用以下形式表示:$$\be......
  • 【LeetCode】17. 电话号码的字母组合
    链接:https://leetcode.cn/problems/letter-combinations-of-a-phone-number/思路:利用深度优先遍历遍历两个空间第一个空间是digits,命名为space1第二个空间是digits的每一位自身的空间,命名为space2关键是遍历完每一个space2之后,如何转到space1的下一个space2中代码classS......
  • 【LeetCode】39. 组合总和
    题目给你一个无重复元素的整数数组candidates和一个目标整数target,找出candidates中可以使数字和为目标数target的所有不同组合,并以列表形式返回。你可以按任意顺序返回这些组合。candidates中的同一个数字可以无限制重复被选取。如果至少一个数字的被选数......
  • 3D组合地图在数据可视化大屏中的应用
    前言当下数据可视化大屏展示的花样层出不穷,可视化大屏的C位越来越卷,地图的样式已经不再止步于普通的平面地图,在虚拟环境中探索和交互,今天我们要介绍的这一款3D组合地图可以将复杂的数据以直观的方式呈现出来,使得数据更容易被理解和分析。例如,通过将人口分布、经济状况等数据与3D......