zoukankan      html  css  js  c++  java
  • day16 Python 类的关联关系

    """
    1. 关联关系:两种事物必须是互相关联的,但是在某些特殊情况下是可以更改和更换的。关联关系一般长期性的、拥有性的关系,而且双方的关系一般是平等的,如学校与学生之间、老师与学生之间。被关联类B以类的属性形式出现在关联类A中,关联可以是单向的,也可以是双向的。依赖关系与关联关系的区别有动静之分,依赖关系的偶然性和临时性说明了动态性,关联关系的长期性、拥有性静态地展示了对被关联类的引用。
    
    
    关联关系在代码上体现为四种形式:
    
     1. 单向关联:单向拥有关系,只有一个类知道另一个类的属性和方法
    
     2. 双向关联:双向拥有关系,双方都知道对方的属性和方法
    
     3. 自身关联:自己关联自己,这种情况比较少但也有用到,如链表
    
     4. 多重性关联:表示两个类的对象在数量上的对应关系,多重性可在关联线上用数字范围表示
    """
    
    
    # 关联关系如男女朋友 一对一的关系,单向关联
    
    class Boy(object):
    
        def __init__(self, name, girl_friend=None):
            self.name = name
            self.girlfriend = girl_friend
    
        def happy(self):
            print(f"[{self.name}]your are happy..?!")
    
        def showtime(self):
            if self.girlfriend:
                print(f"[{self.name}] 6翻!")
            else:
                print("吃狗粮!")
    
    
    class Girl(object):
    
        def __init__(self, name, boy_friend=None):
            self.name = name
            self.boyfriend = boy_friend
    
        def shop(self):
            if self.boyfriend:
                print(f"[{self.name}]和男朋友[{self.boyfriend.name}]一起购物!")
                self.boyfriend.happy()
    
            else:
                print("吃狗粮!")
    
    
    fhb = Boy("fhb")
    
    xiaolan = Girl("xiaolan")
    
    fhb.girlfriend = xiaolan
    
    xiaolan.boyfriend = fhb
    
    xiaolan.shop()
    
    fhb.showtime()
    
    
    # 关联关系,一对多 比如一个老师有多个学生或者多对多,双向关联
    
    class Teacher(object):
    
        def __init__(self, name, lst=None):
            self.name = name
            if not lst:
                self.lst = []
            else:
                self.lst = lst
    
        def add(self, stu):
            self.lst.append(stu)
    
        def classroom(self):
            if self.lst:
                for s in self.lst:
                    print("name of student: ", s.name)
    
    
    class Student(object):
    
        def __init__(self, name, teacher):
            self.name = name
            self.teacher = teacher
    
    
    t1 = Teacher("t1")
    s1 = Student("s1", t1)
    s2 = Student("s2", t1)
    
    t1.add(s1)
    t1.add(s2)
    t1.classroom()
    
    
    
    # 自身关联
    
    class Node(object):
        def __init__(self):
            self.next = Node()
    

      

  • 相关阅读:
    (十六)字段表集合
    (十五)类索引
    (十四)访问标志 Access_flags
    (一)单例模式
    (二十三)IDEA 构建一个springboot工程,以及可能遇到的问题
    (十三)class文件结构:常量池(转)
    Hive优化
    标签整理
    一些学习资料
    jstree树形菜单
  • 原文地址:https://www.cnblogs.com/fanghongbo/p/9959791.html
Copyright © 2011-2022 走看看