MST

星途 面试题库

面试题:Python中组合与聚合的区别

请阐述在Python中组合(Composition)和聚合(Aggregation)这两种关系的主要区别,并分别给出一个简单的代码示例来体现这两种关系。
48.4万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试

区别

  1. 组合(Composition):表示一种强“拥有”关系,整体和部分的生命周期紧密相关。部分不能脱离整体而单独存在,整体销毁时,部分也随之销毁。
  2. 聚合(Aggregation):表示一种弱“拥有”关系,整体和部分的生命周期可以相互独立。部分可以在不同的整体中复用。

代码示例

组合

class Engine:
    def __init__(self, power):
        self.power = power


class Car:
    def __init__(self, brand, power):
        self.brand = brand
        self.engine = Engine(power)


car = Car('Toyota', 200)

在上述代码中,Car类包含Engine类的实例作为其组成部分。Engine实例的生命周期完全依赖于Car实例。当Car对象被销毁时,Engine对象也不再存在。

聚合

class Department:
    def __init__(self, name):
        self.name = name


class Employee:
    def __init__(self, name, department):
        self.name = name
        self.department = department


department = Department('Engineering')
employee = Employee('John', department)

在这段代码中,Employee类聚合了Department类的实例。Department实例可以独立于Employee实例存在,并且可以被多个Employee实例复用。