Python 类组合和聚合

Admin 2019-04-28 16:15:47 Python

聚合(aggregation):

是整体与部分的关系。

通常在定义一个整体类后,再去分析这个整体类的组成结构。从而找出一些组成类,该整体类和组成类之间就形成了聚合关系。需求描述中“包含”、“组成”、“分为…部分”等词常意味着聚合关系。

#! /usr/bin/env python
# -*- coding:utf8 -*-

'''
聚合关系
'''

class A(object):
    def __init__(self):
        self.num = 1
        
class B(object):
    def __init__(self, num):
        self.num = num  # 有一个A类的实例对象
        
    def __del__(self):
        print "not del"
        
old_A = A()
old_B = B(old_A)
del old_B

组合(composition):

也表示类之间整体和部分的关系,但是组合关系中部分和整体具有统一的生存期。一旦整体对象不存在,部分对象也将不存在。部分对象与整体对象之间具有共生死的关系。

#! /usr/bin/env python
# -*- coding:utf8 -*-

'''
组合关系
'''

class A(object):
    def __init__(self):
        self.num = 2
        
class B(object):
    def __init__(self):
        self.num = A()  # 包含A类的实例对象
        
    def __del__(self):
        print "not del"
        
old_B = B()
del old_B

组合,B实例对象不存在了,内部组合的A实例也不存在。

聚合,B实例对象不存在了,从初始化方法传入的A实例不属B实例对象,所以不影响。

相关文章
最新推荐