• 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))

      解除关系:

    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)

  • 相关阅读:
    uvalive 3971 Assemble
    poj 1064 Cable master
    1130mysql explain中的type列含义和extra列的含义
    1128ORDER BY的原理
    1125Sending data
    1125MySQL Sending data导致查询很慢的问题详细分析
    1125mysqbinlog日志
    1122Shell脚本之利用mysqldump备份MySQL数据库
    1122从业务优化MYSQL
    1122MySQL性能优化之 Nested Loop Join和Block Nested-Loop Join(BNL)
  • 原文地址:https://www.cnblogs.com/wangdianchao/p/11837113.html
Copyright © 2020-2023  润新知