zoukankan      html  css  js  c++  java
  • 面向对象三大特性之组合

    一、简介

    '''
    什么是组合
        组合指的是一个对象拥有某一个属性,该属性的值是另一个类的对象
    为何要用组合
        为了减少代码冗余
    '''

    二、利用组合减少代码冗余

    # 背景
    class Company:
        def __init__(self, c_name, address):
            self.name = c_name
            self.address = address
    
    
    class Department:
        def __init__(self, d_name, project):
            self.name = d_name
            self.project = project
    
    
    class Staff(Company, Department):
        def __init__(self, username, age, sex, c_name, address, d_name, project):
            self.name = username
            self.age = age
            self.sex = sex
            Company.__init__(self, c_name, address)
            Department.__init__(self, d_name, project)
    
    
    # userinfo = Staff('fred', '26', 'male', 'haymaker', 'shanghai', 'sa', 'The Walker')
    # 以上代码是子类通过指明道姓的方式,调用了父类的__init__()方法,但显然代码还是不够简洁
    
    
    # 利用组合改进
    
    
    class Company:
        def __init__(self, name, address):
            self.name = name
            self.address = address
    
    
    class Department:
        def __init__(self, name, project):
            self.name = name
            self.project = project
    
    
    class Staff(Company, Department):
        def __init__(self, name, age, sex):
            self.name = name
            self.age = age
            self.sex = sex
    
    
    # 创建公司信息
    haymaker = Company('haymaker', 'shanghai')
    
    # 创建部门信息
    sa = Department('sa', 'The Walker')
    
    # 创建员工信息
    userinfo = Staff('fred', '26', 'male')
    # 将部门和公司信息绑定给员工,生成员工信息 userinfo.company = haymaker userinfo.department = sa print(''' <姓名:%s 年龄:%s 性别:%s 公司:%s 公司地址:%s 部门:%s 负责产品:%s> ''' % (userinfo.name, userinfo.age, userinfo.sex, userinfo.company.name, userinfo.company.address, userinfo.department.name, userinfo.department.project)) print(userinfo.company.__dict__) print(userinfo.department.__dict__) # 利用面向对象的组合特性,上面的背景下,只要实例化出公司和部门,所有员工都可以绑定改对象,作为自己属性的值
  • 相关阅读:
    八大排序(一)-------冒泡排序
    vs code 常用插件记录
    vc code 透明背景图片配置
    .Net FrameWork获取配置文件信息
    c#中关于Convert.ToDouble的一个注意事项
    JsonArray
    webpack打包(二)
    了解webpack(一)
    vue组件的封装
    DIV+CSS必须知道的事
  • 原文地址:https://www.cnblogs.com/lichunke/p/9518036.html
Copyright © 2011-2022 走看看