python_面向对象——对象之间的关联关系

1.将类中的对象关联起来(简单的方法)

class Person:
    def __init__(self,name,age,sex):
        self.name = name
        self.age = age
        self.sex = sex
        self.parter = None    #先置空,后面赋值(用于关联对象)
    def do_private_stuff(self):
        pass

p1 = Person('wdc',22,'')
p2 = Person('yhf',23,'')

# 双向绑定,将对象关联起来
p1.parter = p2 #将对象p2复制给对象p1的parter属性
p2.parter = p1 #将对象p1复制给对象p2的parter属性
# 打印对象的parter属性,查看其内容。
print(p1.parter.name,p2.parter.name)

  解除关系:

class Person:
    def __init__(self,name,age,sex):
        self.name = name
        self.age = age
        self.sex = sex
        self.parter = None    #先置空,后面赋值(用于关联对象)
    def do_private_stuff(self):
        pass

p1 = Person('wdc',22,'')
p2 = Person('yhf',23,'')

# 双向绑定,将对象关联起来
p1.parter = p2 #将对象p2复制给对象p1的parter属性
p2.parter = p1 #将对象p1复制给对象p2的parter属性
# 打印对象的parter属性,查看其内容。
print(p1.parter.name,p2.parter.name)

# 双向接触关联关系
p2.parter = None
p1.parter = None

print(p1.parter,p2.parter)

 2.将类中对象关联起来(通过类关联)

class Relation:
    # 保存对象直接的关系
    def __init__(self):
        self.couple = []    #创建空列表

    def make_couple(self,obj1,obj2):
        self.couple = [obj1,obj2]   #将传递进来的两个对象保存到同一列表中,关联在一起
        print('{}和{}确定了情侣关系...'.format(obj1.name,obj2.name))

    def get_my_parter(self,obj):
        # 循环列表中的对象,如果不是刚刚传进来的则返回。
        for i in self.couple:
            if i != obj:
                return i
        else:
            print('你没用对象!')
class Person:
    def __init__(self,name,age,sex,relation):
        self.name = name
        self.age = age
        self.sex = sex
        self.relation = relation    #在每个人的实例中存储关系对象

        def do_private_stuff(self):
            pass

relation_boj = Relation()   #创建保存关系的类的对象
p1 = Person('wdc',22,'',relation_boj)
p2 = Person('yhf',23,'',relation_boj)
relation_boj.make_couple(p1,p2) #通过对象向方法中传递对象p1和对象p2,让两个人相互关联

p1_obj = p1.relation.get_my_parter(p1)  #拿到p1的伴侣的对象(p2)
print('{}的情侣是{}'.format(p1.name,p1_obj.name))
p2_obj = p2.relation.get_my_parter(p2)  #拿到p2的伴侣的对象(p1)
print('{}的情侣是{}'.format(p2.name,p2_obj.name))

python_面向对象——对象之间的关联关系

  解除关系:

class Relation:
    # 保存对象直接的关系
    def __init__(self):
        self.couple = []    #创建空列表

    def make_couple(self,obj1,obj2):
        self.couple = [obj1,obj2]   #将传递进来的两个对象保存到同一列表中,关联在一起
        print('{}和{}确定了情侣关系...'.format(obj1.name,obj2.name))

    def get_my_parter(self,obj):
        # 循环列表中的对象,如果不是刚刚传进来的则返回。
        for i in self.couple:
            if i != obj:
                return i
        else:
            print('你没有对象!')

    def break_up(self,obj):
        print('{}主动解除了关系!'.format(obj.name))
        self.couple.clear() #清空列表,解除关系
class Person:
    def __init__(self,name,age,sex,relation):
        self.name = name
        self.age = age
        self.sex = sex
        self.relation = relation    #在每个人的实例中存储关系对象

        def do_private_stuff(self):
            pass

relation_boj = Relation()   #创建保存关系的类的对象
p1 = Person('wdc',22,'',relation_boj)
p2 = Person('yhf',23,'',relation_boj)
relation_boj.make_couple(p1,p2) #通过对象向方法中传递对象p1和对象p2,让两个人相互关联

p1.relation.break_up(p1)  #通过p1解除关系
#或通过p2解除关系:p2.relation.break_up()

p1_obj = p1.relation.get_my_parter(p1)  #拿到p1的伴侣的对象(p2)

p2_obj = p2.relation.get_my_parter(p2)  #拿到p2的伴侣的对象(p1)

python_面向对象——对象之间的关联关系