python记录_day17 类与类之间的关系
一、依赖关系
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 类与类之间的关系的更多相关文章
- Python面向对象02/类的空间问题、类与对象之间的关系、类与类之间的关系
Python面向对象02/类的空间问题.类与对象之间的关系.类与类之间的关系 目录 Python面向对象02/类的空间问题.类与对象之间的关系.类与类之间的关系 1. 类的空间问题 2. 类与对象之间 ...
- python 面向对象专题(二):类的空间问题、类与对象之间的关系、类与类之间的关系
https://www.cnblogs.com/liubing8/p/11308127.html 目录 Python面向对象02/类的空间问题.类与对象之间的关系.类与类之间的关系 1. 类的空间问题 ...
- PHP类和对象之间的关系
类是对象的描述: 类和对象之间的关系类似于建房子的图纸和房子: 创建类--new对象--用对象: 一.对象的两个特性: --对象的行为(功能):可以对对象施加操作,例如,电视机的开.关.转换频道: - ...
- JAVA面向对象-----接口与类、接口之间的关系
接口与类.接口之间的关系 大家之前都知道类与类之间的关系继承,那么接口与类之间又是怎样子的关系呢? 接口与类之间是实现关系.非抽象类实现接口时,必须把接口里面的所有方法实现.类实现接口用关键字impl ...
- UML图类,接口之间的关系
UML图类之间的关系(来自大话设计模式中的一张图,代表了类,接口之间的各种关系)
- 一文读懂Python web框架和web服务器之间的关系
我们都知道 Python 作为一门强大的语言,能够适应快速原型和较大项目的制作,因此被广泛用于 web 应用程序的开发中. 在面试的过程中,大家或多或少都被问到过这样一个问题:一个请求从浏览器发出到数 ...
- 关于package,import,和“找不到可以加载的主类”报错之间的关系
正在回顾java基础 目录结构如下: 一 以下代码,进入Example所在的文件夹, javac和java都不会报错 public class Example{ public static void ...
- Java 中判断类和实例之间的关系
判断类与实例的关系有以下三种方式 1.instanceof关键字,用来判断对象是否是类的实例 (对象 => 类 ) 2.isAssignableFrom,用来判断类型间是否存在派生关系 (类 ...
- C# 多线程 类构造函数 类方法之间的关系
先定一个类,既有构造函数又有类方法: public class WriteNumber { /// <summary> /// 构造函数 /// </summary> publ ...
随机推荐
- IDEA配置SVN,Git,GitLab
集成GitLab插件:http://baijiahao.baidu.com/s?id=1602987918454762059&wfr=spider&for=pc 使用IDEA集成Git ...
- 论文笔记之 SST: Single-Stream Temporal Action Proposals
SST: Single-Stream Temporal Action Proposals 2017-06-11 14:28:00 本文提出一种 时间维度上的 proposal 方法,进行行为的识别.本 ...
- 1月4日笔记 vi编辑器
Penn vi编辑器,全称是visual interface,可以执行输出.删除.查找.替换等众多的文本操作. vi并不是一个排版程序,不可以对字体.格式.段落等其他的属性进行编排. vi是全 ...
- Python open 读写小栗子
1.样本内容 A.txt 2.上代码: f=open(r'E:\A.txt','r') boyA=[] boyB=[] count = for each_line in f: ]!='======': ...
- Pandas 基础(3) - 生成 Dataframe 的几种方式
这一节想总结一下 生成 Dataframe 的几种方式: CSV Excel python dictionary List of tuples List of dictionary 下面分别一一介绍具 ...
- BZOJ 2754 【SCOI2012】 喵星球上的点名
题目链接:喵星球上的点名 首先可以发现姓和名两个串就是逗你玩的.在两个串中间插入一个\(10001\),当成一个串做就可以了. 于是我们的问题转化为了: 有\(n\)个串\(A_1,A_2,\dots ...
- MD5加密与Hash加密
一.Md5加密 MD5算法具有以下特点: 1.压缩性:任意长度的数据,算出的MD5值长度都是固定的. 2.容易计算:从原数据计算出MD5值很容易. 3.抗修改性:对原数据进行任何改动,哪怕只修改1个字 ...
- java进程占用系统内存高,排查解决
转自:http://blog.51cto.com/chengxiaobai/2052530?cid=695076 故障:最近收到生产服务器的报警短信以及邮件,报警内容为:内存使用率高于70%. 使用t ...
- 1.1 vue.js devtools使用教程
1. vue.js devtools使用教程
- php后台操作以及一些减缓服务器压力的问题
上次提到一个微信投票系统,做了一个微信重定向解决了,一个授权复用的问题,昨天投票系统正式投入使用:测试的时候没有问题,上线后出现了一点小问题, 一:php页面参数接受和php中 switch 那个先执 ...