zoukankan      html  css  js  c++  java
  • 类的组合

    一、什么是组合

    • 组合就是一个类的对象具备某一个属性,该属性的值是另一个类的对象

    1.1 组合的概念

    class Foo:
        def __init__(self,bar):
            self.bar=bar
    
    class Bar:
        pass
    
    bar=Bar()	# 实例化对象
    # f=Foo(Bar())	# 实例化对象并 传对象进行初始化
    f=Foo(bar)	# 
    

    之前咱们说过。对象添加属性的两种方式。其中一种就是组合,只不过添加的不是属性,而是一个对象。

    二、如何使用组合

    • 组合是用来解决类与类之间代码冗余的问题

    2.1 通过init初始化方法

    class Person:
        school = 'oldboy'
    
    class Teacher(Person):
        def __init__(self,name,age,level,course):
            self.name=name
            self.age=age
            self.level=level
            #course是课程对象,表示老师教授的课程
            self.course=course
    
    class Student(Person):
        def __init__(self,name,age,course):
            self.name=name
            self.age=age
            # course是课程对象,表示学生选的课程
            self.course = course
    
    class Course:
        def __init__(self,course_name,course_price,course_period):
            self.name=course_name
            self.price=course_price
            self.period=course_period
    
    course=Course('Python',20180,7)		# 得到课程对象
    stu=Student('xc',19,course)	# 实例化学生类,并传参,添加对象进行组合
    teacher=Teacher('xc',19,'高级',course) # 实例化教师类,并传参,添加对象进行组合
    

    三、什么时候用组合?什么时候用继承?

    它和继承很像,但又不同。

    1.继承的方式

    通过继承建立了派生类与基类之间的关系,它是一种'是'的关系,比如白马是马,人是动物。

    当类之间有很多相同的功能,提取这些共同的功能做成基类,用继承比较好,比如老师是人,学生是人

    2.组合的方式

    用组合的方式建立了类与组合的类之间的关系,它是一种‘有’的关系,比如教授有生日,教授教python和linux课程,教授有学生s1、s2、s3...

  • 相关阅读:
    在终端聊天
    Vue双向数据绑定的原理
    手动封装on,emit,off
    浅谈Vue中组件传值的几种方式
    常见的一些性能优化的小方法
    常见的一些JS兼容问题
    移动布局的方法
    移动布局的方法
    快速、高效的学习vuex
    移动端300ms延迟原因及解决方案
  • 原文地址:https://www.cnblogs.com/XuChengNotes/p/11425220.html
Copyright © 2011-2022 走看看