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 ...
随机推荐
- c 语言中宏定义和定义全局变量的区别
宏定义和定义全局变量的区别: 1 作用时间不同. 宏定义在编译期间即会使用并替换,而全局变量要到运行时才可以. 2 本质类型不同. 宏定义的只是一段字符,在编译的时候被替换到引用的位置.在运行中是没有 ...
- s2-045漏洞批量检测工具
今天晚上看老铁们在群里就这个st2-045漏洞讨论得火热,个人不太喜欢日站,本来想直接写个批量挂马的东西,但是想想还是算了,如果你有兴趣,改改也很容易,反正不关我的事 测试图 2017-3-8更新 增 ...
- SQL 检查 Varchar 是否能转换为 NUMERIC
https://bbs.csdn.net/topics/390480323 ISNUMERIC(size_long)=1 (IIF( ISNUMERIC(size_long)=1 AND ISNUME ...
- LOJ 534 花团(线段树+dfs栈)
题意 https://loj.ac/problem/534 思路 又是复杂度错误的一题,\(O(n^2\log n)\) 能过 \(15000\) . 虽然看起来强制在线,其实是一道假的在线题.首先按 ...
- uoj #228. 基础数据结构练习题 线段树
#228. 基础数据结构练习题 统计 描述 提交 自定义测试 sylvia 是一个热爱学习的女孩子,今天她想要学习数据结构技巧. 在看了一些博客学了一些姿势后,她想要找一些数据结构题来练练手.于是她的 ...
- WAI-ARIA无障碍网页应用属性完全展示
本文为原创辛苦之作,尊重劳动,转载请注明来自张鑫旭-鑫空间-鑫生活[http://www.zhangxinxu.com]本文地址:http://www.zhangxinxu.com/wordpress ...
- 安装ik分词器以及版本和ES版本的兼容性
一.查看自己ES的版本号与之对应的IK分词器版本 https://github.com/medcl/elasticsearch-analysis-ik/blob/master/README.md 二. ...
- eureka 和zookeeper 区别 优势【转】
作为服务注册中心,Eureka比Zookeeper好在哪里 著名的CAP理论指出,一个分布式系统不可能同时满足C(一致性).A(可用性)和P(分区容错性).由于分区容错性在是分布式系统中必须要保证的, ...
- SpringBoot中加密com.github.ulisesbocchio
Jasypt Spring Boot 为 Spring Boot 项目中的属性源(property sources)提供加密支持. 有三种方法可以在项目中集成 jasypt-spring-boot: ...
- .net unicode汉字互相转换
[两种方法].net unicode汉字互相转换 ========================================= //汉字转Unicode编码(ASCII) private str ...