一、依赖关系

a类的对象是b类方法的参数

这种关系是我用着你,但你不属于我,比如公司和临时工的关系,是很弱的一种关系

 class Zhiwu:
def __init__(self,name,atk):
self.name = name
self.atk = atk
def attack(self,zm): #对象作为参数传递
print("%s打了%s一下" % (self.name,zm.name))
zm.hp -= zhiwu.atk class Zombin:
def __init__(self,name,hp):
self.name = name
self.hp = hp zhiwu = Zhiwu("豌豆射手",10)
zm =Zombin("铁头娃",1000)
zhiwu.attack(zm)
zhiwu.attack(zm)
zhiwu.attack(zm) print("剩余血量",zm.hp) 结果:
豌豆射手打了铁头娃一下
豌豆射手打了铁头娃一下
豌豆射手打了铁头娃一下
剩余血量 970

依赖关系

二、关联关系、聚合关系、组合关系

a类的对象作为b类的一个属性

这种关系是我用着你,你也属于我

一对一的关系:

class Boy:

    def __init__(self,name,girlFriend= None):
self.name = name self.girlFriend = girlFriend #关联关系,对象是作为另一个类的属性的 def chi(self):
if self.girlFriend:
print("%s和%s去吃饭" %(self.name,self.girlFriend.name))
self.girlFriend.happy()
else:
print("单身狗,自己一个人吃吧") class Girl:
def __init__(self,name,age):
self.name =name
self.age = age
def happy(self):
print("出去吃东西很开心") g = Girl("小花",20)
b = Boy("张三",g)
# b.girlFriend = g b.chi() 结果:
张三和小花去吃饭
出去吃东西很开心

一对一关联

一对多的关系(反过来就是一对一)

比如,老师和学生,一个老师教多个学生,一个学生听一个老师讲

 '''
一对多,反过来是一对一,
一个老师对应多个学生,反过来一个学生对应一个老师
'''
class Teacher: def __init__(self,name,lst = None): #作为属性,列表装的是对象
self.name= name
if lst == None:
self.lst = []
else:
self.lst = lst
# 添加学生
def add(self,s):
self.lst.append(s)
# 显示学生
def display(self):
for el in self.lst:
print(el.name) class Student: def __init__(self,name,number):
self.name = name
self.number = number s1 = Student("张三",1)
s2 = Student("李四",2)
s3 = Student("王五",3)
s4 = Student("麻子",4)
t = Teacher("涛哥")
t.add(s1)
t.add(s3)
t.add(s4)
t.display() 结果:
张三
王五
麻子

一对多

聚合关系:属于关联关系中的一种特例。侧重点是xxx和xxx聚合成xxx,各有各的生命周期。比如电脑,电脑里有CPU、硬盘、内存等,电脑挂了,CPU还是好的,还是完整的个体。

组合关系:也属于关联关系中的一种特例。写法上差不多, 组合关系比聚合还要紧密。比如 人的大脑、心脏、各个器官,这些器官组合成一个人。这时,人如果挂了,其他的东西也跟着挂了。

三、类的特殊方法

1、  类() 时自动执行__init__ , 进行初始化

2、  对象()时自动执行__call__   ,表示调用

3、 对象[key]   自动执行  __getitem__

4、对象[key] = value  自动执行 __setitem__

5、del 对象[key]  自动执行 __delitem__

6、 对象+对象  自动执行 __add__

7、with 对象 as 变量    自动执行 __enter__ 和  __exit__

8、 print(对象)   自动执行 __str__

9、 __hash__ == None  干掉可哈希,这样对象就不可哈希了

10、 __repr__    用repr()时执行

11、__lt__   用<时执行          __gt__   用>时执行

12、 __le__  用<=时执行      __ge__  用>=时执行

13、 __eq__  用==时执行

14、__format__  用format()时调用

15、__new__ 创建对象时开辟内存,自动执行

python记录_day17 类与类之间的关系的更多相关文章

  1. Python面向对象02/类的空间问题、类与对象之间的关系、类与类之间的关系

    Python面向对象02/类的空间问题.类与对象之间的关系.类与类之间的关系 目录 Python面向对象02/类的空间问题.类与对象之间的关系.类与类之间的关系 1. 类的空间问题 2. 类与对象之间 ...

  2. python 面向对象专题(二):类的空间问题、类与对象之间的关系、类与类之间的关系

    https://www.cnblogs.com/liubing8/p/11308127.html 目录 Python面向对象02/类的空间问题.类与对象之间的关系.类与类之间的关系 1. 类的空间问题 ...

  3. PHP类和对象之间的关系

    类是对象的描述: 类和对象之间的关系类似于建房子的图纸和房子: 创建类--new对象--用对象: 一.对象的两个特性: --对象的行为(功能):可以对对象施加操作,例如,电视机的开.关.转换频道: - ...

  4. JAVA面向对象-----接口与类、接口之间的关系

    接口与类.接口之间的关系 大家之前都知道类与类之间的关系继承,那么接口与类之间又是怎样子的关系呢? 接口与类之间是实现关系.非抽象类实现接口时,必须把接口里面的所有方法实现.类实现接口用关键字impl ...

  5. UML图类,接口之间的关系

    UML图类之间的关系(来自大话设计模式中的一张图,代表了类,接口之间的各种关系)

  6. 一文读懂Python web框架和web服务器之间的关系

    我们都知道 Python 作为一门强大的语言,能够适应快速原型和较大项目的制作,因此被广泛用于 web 应用程序的开发中. 在面试的过程中,大家或多或少都被问到过这样一个问题:一个请求从浏览器发出到数 ...

  7. 关于package,import,和“找不到可以加载的主类”报错之间的关系

    正在回顾java基础 目录结构如下: 一 以下代码,进入Example所在的文件夹, javac和java都不会报错 public class Example{ public static void ...

  8. Java 中判断类和实例之间的关系

    判断类与实例的关系有以下三种方式 1.instanceof关键字,用来判断对象是否是类的实例 (对象 => 类 )   2.isAssignableFrom,用来判断类型间是否存在派生关系 (类 ...

  9. C# 多线程 类构造函数 类方法之间的关系

    先定一个类,既有构造函数又有类方法: public class WriteNumber { /// <summary> /// 构造函数 /// </summary> publ ...

随机推荐

  1. HDU 4825 Xor Sum(01字典树)题解

    思路:先把所有数字存进字典树,然后从最高位贪心. 代码: #include<set> #include<map> #include<stack> #include& ...

  2. 最最简单的c语言函数汇编分析

    0x01 环境 xp+vc6.0 0x02 代码 int plus(int x, int y) { return 0; } 以下是vc6.0的反汇编窗口 1: int plus(int x, int ...

  3. 卸载linux系统上自带的mysql

    步骤: 1.打开centos命令提示符,切换为root用户 2.输入rpm -qa|grep -i mysql命令以检查系统含有的mysql插件,回车,若没有则说明无自带mysql,系统很干净.若有显 ...

  4. 【使用指南】WijmoJS 前端开发工具包

    为方便广大前端开发人员更好的使用 WijmoJS 前端开发工具包,葡萄城专门推出了 WijmoJS 使用指南,该指南详细地介绍了如何把 WijmoJS 各种强大的功能应用到您自己的 Web 项目中,助 ...

  5. Long类型转json时前端js丢失精度解决方案

    一.问题背景 Java后端开发过程中,尤其是id字段,因数值太大,通过json形式传输到前端后,在js解析时,会丢失精度. 如果对精度丢失没有什么概念,可以看一个知乎的帖子,来感受一下:https:/ ...

  6. Sublime Text3 插件:DocBlockr与javascript注释规范

    原:http://www.ithao123.cn/content-719950.html 1.引子 在写代码的时候,尤其是写脚本,最需要注释了.目前脚本.样式的注释格式都有一个已经成文的约定规范(这些 ...

  7. KNN——图像分类

    内容参考自:https://zhuanlan.zhihu.com/p/20894041?refer=intelligentunit 用像素点的rgb值来判断图片的分类准确率并不高,但是作为一个练习kn ...

  8. 【RFT】【环境配置】Mac

    参考地址:http://blog.csdn.net/u010044052/article/details/70858015?utm_source=itdadao&utm_medium=refe ...

  9. 【Web Service】

    Restful: (Representational State Transfer  表现层[指客户端]状态[指服务器端]转化) RPC: RPC 风格的开发关注于服务器/客户端之间的方法调用, 而并 ...

  10. ZJOI-2017 R1游记

    无实力非既得利益的$xrdog$作为一名外卡选手去参加ZJOI2017啦... Day 0: 颓?(细节待填坑..) Day 1: 上午我来到讲课现场发现讲课内容是:搜索专题  QwQ不太清醒的我一下 ...