---恢复内容开始---
一 依赖关系(最轻的一种关系,在方法中引入另一个类的对象)
class Elephant: def __init__(self,name): self.name=name def open(self,ab): # 依赖关系 print("冰箱哥哥%s开门" % self.name) # 想要一个冰箱,是哪个冰箱没有指定 # print(self) ab.open_door() # 引入另一个变量 ab.为引入方式 # 由外界传递进来⼀个冰箱, 让冰箱开⻔. 这时. ⼤象不⽤背着冰箱到处跑. # 类与类之间的关系也就不那么的紧密了. 换句话说. 只要是有open_door()⽅法的对 象. 都可以接收运⾏ def jin(self): print("我进冰箱了") def close(self,ab): print("冰箱哥哥关门") ab.close_door()class bingxaing: def open_door(self): print("冰箱自己打开们") # print(self) def close_door(self): print("冰箱自己关上了门")alex=Elephant("离散") #大象的名字属性bx=bingxaing() #创建冰箱对像alex.open(bx) #调用创建的对象 注意. 此时是把⼀个冰箱作为参数传递进去了. 也就是说. ⼤象可以指定任何⼀个 冰箱alex.jin()alex.close(bx)
⼤象和冰箱之间就是依赖关系. 我⽤着你. 但是你不属于我. 这种关系是最弱的.
二 关联关系, 组合关系,聚合关系
这三个代码在写法上是一样的,但是,从含义上是不一样
1 关联关系 : 两种食物必须是互相关联的,但是在某些特殊情况下是可以更改和更换的
2 聚合关系.
属于关联关系中的⼀一种特例例. 侧重点是xxx和xxx聚合成xxx. 各⾃自有各⾃自的
声明周期. 比如电脑. 电脑⾥里里有CPU, 硬盘, 内存等等. 电脑挂了了. CPU还是好的. 还是完整的个体3 组合关系:
属于关联关系中的⼀一种特例例. 写法上差不多. 组合关系比聚合还要紧密. 比
如⼈人的⼤大脑, ⼼心脏, 各个器官. 这些器官组合成⼀一个⼈人. 这时. ⼈人如果挂了了. 其他的东⻄西也跟着挂了了.
先看看关联关系的例子
class boy: def __init__(self,name,xingge,girFriend=None): self.name=name self.xingge=xingge self.girFriend=girFriend def yujian(self,girl): self.girFriend=girl def chi(self): if self.girFriend: print("随便吃 %s和%s" % (self.name,self.girFriend.name)) else: print("单身狗,吃什么吃")class girl: def __init__(self,name): self.name = name def chi(self): print("%s在吃饭" % self.name)girl = girl("撒旦")boy=boy("李二","急撒")boy.chi() # 结果 :单身狗,吃什么吃boy.yujian(girl)boy.chi() # 结果 : 随便吃 李二和撒旦# boy.girFriend.name # 找到他的女友# boy.girFriend.chi()
例子二:
class School: def __init__(self, name, address, phone): self.name = name self.address = address self.phone = phone self.__teach_list = [] def zhaopin(self, t): self.__teach_list.append(t) def display(self): for el in self.__teach_list: print(el.name, el.hobby)class Teacher: def __init__(self, name, gender, salary, hobby, school): self.name = name self.gender = gender self.salary = salary self.hobby = hobby self.school = schoololdboy_bj = School("北京老男孩", "美丽富饶的沙河", "10086")oldboy_sh = School("北京老男孩, 上海分校", "上海浦东", "10010")oldboy_sz = School("北京老男孩, 深圳分校(骑士计划)", "南山区", "10000")t1 = Teacher("配齐", "男", 200000, "上课", oldboy_bj)t2 = Teacher("太白", "男", 150000, "开车", oldboy_bj)t3 = Teacher("Eggon", "男", 123456, "钻研技术", oldboy_sh)t4 = Teacher("高鑫", "女", 45678, "相夫教子", oldboy_sz)t5 = Teacher("日天", "男", 666, "看天", oldboy_sz)# print(t3.school.address) # 找到老师所在的学校的地址oldboy_bj.zhaopin(t1)oldboy_bj.zhaopin(t2)oldboy_bj.display()oldboy_sh.zhaopin(t3)oldboy_sz.zhaopin(t4)oldboy_sz.zhaopin(t5)oldboy_sz.display()
三 继承关系
子类在不影响⽗类的程序运行的基础上对父类进行的扩充和扩展. 这里.我们可以把父类被称为超类或
者基类. 子类被称为派生类