博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
day16 Python 类的关联关系
阅读量:4358 次
发布时间:2019-06-07

本文共 1837 字,大约阅读时间需要 6 分钟。

"""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 = xiaolanxiaolan.boyfriend = fhbxiaolan.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 = teachert1 = 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()

  

转载于:https://www.cnblogs.com/fanghongbo/p/9959791.html

你可能感兴趣的文章
设计模式02----工厂设计模式(3种)
查看>>
F2工作流引擎模型
查看>>
64:数据流中的中位数
查看>>
常用排序算法之--快速排序
查看>>
php实现设计模式之 简单工厂模式
查看>>
学好Mac常用命令,助力iOS开发
查看>>
asp.net core 通过 TeamCity 实现持续集成笔记
查看>>
定制起始url(scrapy_redis)
查看>>
VS2015 遇到异常。这可能是由某个扩展导致的
查看>>
Tomcat启动时选择加载项目
查看>>
android博客
查看>>
Shell排序——软考(五)
查看>>
jQuery EasyUI API 中文文档 - 搜索框
查看>>
盘古分词,记灵一下
查看>>
PHP投票练习
查看>>
Java事件处理机制- 事件监听器的四种实现方式【转】
查看>>
CSS3伪类选择器:nth-child()
查看>>
POJ2524——Ubiquitous Religions
查看>>
UVA548——Tree(中后序建树+DFS)
查看>>
Hbase配置(伪分布式模式)
查看>>