day 016 面向对象---类与类的关系
---恢复内容开始---
一 依赖关系(最轻的一种关系,在方法中引入另一个类的对象)
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 = school oldboy_bj = School("北京老男孩", "美丽富饶的沙河", "")
oldboy_sh = School("北京老男孩, 上海分校", "上海浦东", "")
oldboy_sz = School("北京老男孩, 深圳分校(骑士计划)", "南山区", "") t1 = Teacher("配齐", "男", , "上课", oldboy_bj)
t2 = Teacher("太白", "男", , "开车", oldboy_bj)
t3 = Teacher("Eggon", "男", , "钻研技术", oldboy_sh)
t4 = Teacher("高鑫", "女", , "相夫教子", oldboy_sz)
t5 = Teacher("日天", "男", , "看天", 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()
三 继承关系
子类在不影响⽗类的程序运行的基础上对父类进行的扩充和扩展. 这里.我们可以把父类被称为超类或
者基类. 子类被称为派生类
day 016 面向对象---类与类的关系的更多相关文章
- C++面向对象高级编程(五)类与类之间的关系
技术在于交流.沟通,转载请注明出处并保持作品的完整性. 本节主要介绍一下类与类之间的关系,也就是面向对象编程先介绍两个术语 Object Oriented Programming OOP面向对象编 ...
- python 面向对象类与类之间的关系
主要内容: 1. 依赖关系 2. 关联关系, 组合关系, 聚合关系 3. 继承关系 4. 类中的特殊成员 引子 大千世界, 万物之间皆有规则和规律,我们的类和对象是对大千世界中的所有事物进行归类. 那 ...
- Java面向对象(概述,构造函数,类与对象的关系,this关键字,成员、局部),匿名对象的调用,构造代码块(5)
Java面向对象(概述,构造函数,类与对象的关系,this关键字,成员.局部),匿名对象的帝爱用,构造代码块(5)
- Python面向对象02/类的空间问题、类与对象之间的关系、类与类之间的关系
Python面向对象02/类的空间问题.类与对象之间的关系.类与类之间的关系 目录 Python面向对象02/类的空间问题.类与对象之间的关系.类与类之间的关系 1. 类的空间问题 2. 类与对象之间 ...
- python 面向对象专题(二):类的空间问题、类与对象之间的关系、类与类之间的关系
https://www.cnblogs.com/liubing8/p/11308127.html 目录 Python面向对象02/类的空间问题.类与对象之间的关系.类与类之间的关系 1. 类的空间问题 ...
- JAVA面向对象-----接口与类、接口之间的关系
接口与类.接口之间的关系 大家之前都知道类与类之间的关系继承,那么接口与类之间又是怎样子的关系呢? 接口与类之间是实现关系.非抽象类实现接口时,必须把接口里面的所有方法实现.类实现接口用关键字impl ...
- 2.java面向对象类与类/类与对象之间关系详解
继承.实现.依赖.关联.聚合.组合的联系与区别 下面的内容很基础,同时也很简单,但是也很重要. 继承 指的是一个类(称为子类.子接口)继承另外的一个类(称为父类.父接口)的功能,并可以增加它自己的新功 ...
- python学习笔记:第17天 面向对象03 类与类之间的关系
一.类与类之间的依赖关系 ⼤千世界, 万物之间皆有规则和规律. 我们的类和对象是对⼤千世界中的所有事物进⾏归类. 那事物之间存在着相对应的关系. 类与类之间也同样如此. 在⾯向对象的世界中. 类与类 ...
- day20 Pyhton学习 面向对象-类与类之间的关系
一.类与类之间的依赖关系 class Elphant: def __init__(self, name): self.name = name def open(self, ref): print(&q ...
随机推荐
- 设计模式:java及spring观察者模式(有利于代码解耦)
http://www.cnblogs.com/softidea/p/5716870.html 什么是ApplicationContext? 它是Spring的核心,Context我们通常解释为上下文环 ...
- matlab 调试日志
debug=; diary off if debug delete('log.txt'); !del log.txt diary('log.txt'); diary ON end diary OFF
- H5离线缓存技术Application Cache
H5离线缓存技术Application Cache 1.离线缓存技术:是浏览器本身的一种机制 HTML5引入Application Cache(应用程序缓存)技术,离线存储可以将站点的一些文件存储在本 ...
- shell 键盘输入
命令:read 从键盘读入数据,赋值变量 [root@ssgao shell]# cat b.sh #!bin/bash read a b c echo "a is : ${a}" ...
- unity中自制模拟第一人称视角
public float sensitivityX = 5f; public float sensitivityY = 5f; public float sensitivetyKeyBoard = 0 ...
- maven scope和项目发布需要注意的地方
Maven Scope的使用: http://www.cnblogs.com/wangyonghao/p/5976055.html servlet-api和jsp-api等jar包,一般由servle ...
- 非图片格式如何转成lmdb格式--caffe
链接 LMDB is the database of choice when using Caffe with large datasets. This is a tutorial of how to ...
- 主机访问虚拟机centos7的服务器
一.虚拟机开启桥梁接 1.编辑-->虚拟网络编辑器 2.虚拟机-->设置 二.Centos的配置---关闭防火墙下的服务器接口 Centos7.0 默认使用firewall作为防火墙,这里 ...
- sptring boot 修改默认Banner
一.自定义banner 启动Spring Boot项目时,在控制台或日志中会默认显示一个Banner,如图所示: 在我们的项目中更希望使用自己的Banner,这样看起来更帅写,但是这对于程序员来说并不 ...
- netty ------------ 如果selector检测到一个channel可以读了
-----------------一个NioEventLoopGroup 的初始化的时候,会初始化一个 NioEventLoop数组,每个NioEventLoop在初始化的时候,会open一个sele ...