一、依赖关系(紧密程度最低)

(1)简单的定义:就是方法中传递一个对象。此时类与类之间存在依赖关系,此关系比较低。

(2)实例植物大战僵尸简易版

题目要求:创建一个植物,创建一个僵尸

1、植物:名字、血量,攻击力

2、僵尸:名字、血量、攻击力

3、植物可以打僵尸,僵尸掉血

4、植物被僵尸咬,植物掉血

# 植物大战僵尸简易版
class ZhiWu:#创建植物类def __init__(self,name,hp,attack):#初始化属性self.name=nameself.hp=hpself.attack=attackdef da(self,js):js.hp-=self.attackclass JiangShi:#创建僵尸类def __init__(self,name,hp,attack):#初始化属性self.name=nameself.hp=hpself.attack=attackdef eat(self,zw):zw.hp -= self.attack
# 创建僵尸和植物对象
zw=ZhiWu("紫罗兰",20,10)
js=JiangShi("躺尸",30,5)
# 植物攻击一次
zw.da(js)
print(js.hp)#20
# 僵尸攻击一次
js.eat(zw)
print(zw.hp)#15

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

1、简单的定义:两种事物必须是相互关联的,在某种特殊情况下是可以更改和更换的 。

2、聚合关系:属于关联关系中的特例,重点是xx和xx聚合成的xxx。各个零部件也可以单独工作。

3、组合关系:组合关系是比较紧密的一种关系,一损俱损。

4、常见格式(一对一或者一对多模式)

def __init__(self,name,xxxlist=None);self.name=nameself.xxxlist=xxxlistdef __init__(self,name,teacher=None):self.teacher=tercher

5、实例:老师和学生模型(老师对学生是一对多,学生对老师是一对一)

# 创建老师类 老师能选学生
class Teacher:def __init__(self,name,stu_lst=None):self.name=nameif stu_lst:# 判断传递过来的参数是否是空self.stu_lst=stu_lstelse:self.stu_lst=[]def tianjia(self,stu):#添加学生功能self.stu_lst.append(stu.name)def display(self):#显示老师对应的学生for i in self.stu_lst:print(i,end=",")
# 创建学生类
class Student:def __init__(self,num,name,teacher=None):self.num=numself.name=nameself.techer=teacher
# 创建1个老师,5个学生
t=Teacher("黄日中")
s1=Student(1,"郭德纲")
s2=Student(2,"岳云鹏")
s3=Student(3,"张杰")
s4=Student(4,"谢啦")
s5=Student(5,"沈腾")
# 添加学生
t.tianjia(s1)
t.tianjia(s2)
t.tianjia(s3)
t.tianjia(s4)
t.tianjia(s5)
# 显示老师学生列表
t.display()#郭德纲,岳云鹏,张杰,谢啦,沈腾,       

三、简单的继承

核心self:谁调用,self就是谁。

'''
学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
class Base:def __init__(self, num):self.num = numdef func1(self):print(self.num)self.func2()def func2(self):print(111, self.num)class Foo(Base):继承def func2(self):print(222, self.num)lst = [Base(1), Base(2), Foo(3)]
for obj in lst:obj.func2()#结果111 1 111 2 222 3class UserInfo(object):passclass Department(object):passclass StarkConfig(object):def __init__(self, num):self.num = numdef changelist(self, request):print(self.num, request)def run(self):self.changelist(999)class RoleConfig(StarkConfig): #继承 StarkConfigdef changelist(self, request):print(666, self.num)class AdminSite(object):def __init__(self):self._registry = {} #空字典def register(self, k, v):self._registry[k] = v(k)site = AdminSite()
site.register(UserInfo, StarkConfig)
site.register(Department, RoleConfig)
# site._registry{UserInfo:StarkConfig(UserInfo),Department:RoleConfig(Department)}
for k, row in site._registry.items():row.run()
# UserInfo,999 666,Department

四、类里面的特殊成员

1、类名() 会自动执行__new__(cls,*args,**kwargs) 创建对象,开辟内存

2、类名()会自动执行__init__(self) 对象初始化

3、对象()会自动执行__call__( )

4、对象[key]会自动执行__getitem__( )

5、对象[k]=value 会自动执行 __setitem__( )

6、del 对象[key] 会自动执行 __delitem__( )

7、对象+对象 会自动执行 __add__( )

8、with 对象 as 变量 会自动执行 __enter__( )__exit__( )

9、干掉hash __hash__ ==None 对象就不可以hash

10、对象可以迭代 __iter__( )

python教程:类与类之间的关系相关推荐

  1. 内存(Display)、显示器(Monitor)和计算机(Computer)均属于一种产品(Product),其中计算机需要显示器和内存。请用Python语言简要实现这些类及它们之间的关系。

    内存(Display).显示器(Monitor)和计算机(Computer)均属于一种产品(Product),其中计算机需要显示器和内存.请用Python语言简要实现这些类及它们之间的关系. clas ...

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

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

  3. UML类图中类之间的关系,聚合,组合,依赖总结

    下面我就根据下面这个图来讲解一下UML类图. 类图 首先,看动物那个矩形框,他就表示为一个类(Class).类图分为三层: 第一层显示类的名称 如果是抽象类,就用斜体表示 第二层显示类的特性,通常是字 ...

  4. Python中怎样改变集合之间的关系?

    Python中怎样改变集合之间的关系?数学中,两个集合关系的常见操作包括:交集.并集.差集.补集.设A,B是两个集合,集合关系的操作介绍如下: 交集是指属于集合A且属于集合B的元素所组成的集合, 并集 ...

  5. Python进阶----表与表之间的关系(一对一,一对多,多对多),增删改查操作

    Python进阶----表与表之间的关系(一对一,一对多,多对多),增删改查操作,单表查询,多表查询 一丶表与表之间的关系 背景: ​ ​ ​  ​ ​ 由于如果只使用一张表存储所有的数据,就会操作数 ...

  6. Java中基本数据类型和Object之间的关系

    1.基本数据类型和Object之间是没有关系的 2.基本数据类型的包装类 例如int 的包装类Integer的父类则是Object 输入:12 解释:在赋值的过程中进行自动装箱

  7. 廖雪峰python教程学习:类、实例与数据封装小结

    类.实例与数据封装小结 廖雪峰老师的python教程 1.类与实例 面向对象最重要的内容就是类(class),类是抽象的模板,后面紧接着是类名,紧接着是(object),表示其是从哪个类上继承上来的, ...

  8. 面向对象:类与对象之间的关系

    什么是类? 类就是具备某些共同特征的实体的集合,它是一种抽象的数据类型,它是对所具有相同特征实体的抽象.在面向对象的程序设计语言中,类是对一类"事物"的属性与行为的抽象. 什么是对 ...

  9. python基础------类与对象之间的关系,封装、继承、多态

    类与对象.封装.继承 练习1 # 1.写一个员工类BwEmployee class BwEmployee(object): # (2)添加构造方法,包含5个形参,保存外部传入值,分别给以下实例属性赋值 ...

  10. python编程高手教程_写给编程高手的Python教程(11) 深入类和对象

    学习使我快乐 鸭子类型和多态 当看到一只鸟走起来像鸭子.游泳起来像鸭子.叫起来也像鸭子,那么这只鸟就可以被称为鸭子. 例如下面三个类(Cat.Dog.Duck)的定义中都定义了say方法 class ...

最新文章

  1. 编写歌唱比赛评分_【活动】预告||“唱自己的歌”歌唱大赛来啦
  2. $.ajax 的async参数在crossdomain跨站下的问题
  3. 二叉树节点数据结构-练习 5 二叉树的建立 遍历
  4. 资源权限操作-添加资源权限
  5. android 局域网邻居,局域网内无邻居 它们去哪儿了?
  6. 利用批处理程序和excel获取windows文件信息
  7. Spring 环境搭建与IOC HelloWorld
  8. sql语句智能提示插件
  9. 一款在Linux下运行Android应用的软件——xDroid
  10. 挑选开关电源的工作频率是依据什么?
  11. 201621123062《java程序设计》第11周作业总结
  12. 中关村科金李超:多元融合成为音视频技术发展新风向
  13. 快传号可以搬运吗,快传号搬运哪些领域容易爆文
  14. S3C2440 开发板实战(8):中断驱动
  15. Source Insight 许可证激活
  16. 广告投放管理平台 oython源码_【直播】全新腾讯广告投放管理平台如何帮助广告主乘风破浪...
  17. 计算机应用能力科目怎么选择,专业技术人员计算机应用能力考试科目类别
  18. 听写单词好助手:从有道py一个单词下载器(绿色免安装)
  19. “变态”的JavaScript 发明人--布兰登·艾奇
  20. 论让人工智能AI学习思考具有智慧之新思路

热门文章

  1. 机器学习:算法性能度量之查准率与查全率
  2. Java的万能进制转换
  3. Xshell6 中,电脑数字小键盘输入不了数字(按数字键输入字母)
  4. 天雁计算机如何恢复出厂,天雁计算机蓝屏了以后就开不了机了 肿么修
  5. 解决ubuntu 18.04网易云音乐安装后无法打开的问题
  6. Knocknock 登陆韩国 Kakao 公链 Klaytn
  7. PostgreSQL及可视化界面navicat在linux-Ubuntu的搭建
  8. 卷积神经网络文本分类
  9. response.setHeader()几个主要头的作用
  10. 从虚拟机中提取pdk安装到Ubuntu的cadence中使用