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 ...
随机推荐
- (转)Shiro学习
(二期)13.权限框架shiro讲解 [课程13]自定义Realm.xmind36.8KB [课程13]用户授权流程.xmind0.2MB [课程13]shiro简介.xmind0.3MB [课程13 ...
- hihoCoder week227 Longest Subsequence
题目链接 https://hihocoder.com/contest/hiho227/problem/1 题目详解 https://hihocoder.com/discuss/question/558 ...
- P3980 [NOI2008]志愿者招募
思路 巧妙的建图 因为每个志愿者有工作的时段,所以考虑让一个志愿者的流量能够从S流到T产生贡献 所以每个i向i+1连INF-a[x]的边(类似于k可重区间集),每个si向ti连边cap=INF,cos ...
- P4213 【模板】杜教筛(Sum)(杜教筛)
根据狄利克雷卷积的性质,可以在低于线性时间复杂度的情况下,求积性函数前缀和 公式 \[ 求\sum_{i=1}^{n}\mu(i) \] 因为\(\mu*I=\epsilon\) 所以设\(h=\mu ...
- 题解——洛谷P2827 NOIP提高组 2016 蚯蚓
队列模拟 详细题解待填坑 #include <cstdio> #include <algorithm> #include <queue> #include < ...
- Using git-flow to automate your git branching workflow
Using git-flow to automate your git branching workflow Vincent Driessen’s branching model is a git b ...
- Kubernetes工作流之Pods二
Init Containers This feature has exited beta in 1.6. Init Containers can be specified in the PodSpec ...
- Global.asax.cs中相关方法
protected void Session_Start(object sender, EventArgs e) { #if DEBUG //debug 登陆默认设置 #endif } protect ...
- Python-ConfigParser获取配置项名称大小写问题
C:\Python27\Lib\ConfigParser.py: def optionxform(self, optionstr): return optionstr.lower() 会将配置文件中的 ...
- POJ 3414 Pots(罐子)
POJ 3414 Pots(罐子) Time Limit: 1000MS Memory Limit: 65536K Description - 题目描述 You are given two po ...