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

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

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

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

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

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

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

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

#植物大战僵尸简易版

class ZhiWu:#创建植物类

def __init__(self,name,hp,attack):#初始化属性

self.name=name

self.hp=hp

self.attack=attackdefda(self,js):

js.hp-=self.attackclass JiangShi:#创建僵尸类

def __init__(self,name,hp,attack):#初始化属性

self.name=name

self.hp=hp

self.attack=attackdefeat(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=name

self.xxxlist=xxxlistdef __init__(self,name,teacher=None):

self.teacher=tercher

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

#创建老师类 老师能选学生

classTeacher:def __init__(self,name,stu_lst=None):

self.name=nameifstu_lst:# 判断传递过来的参数是否是空

self.stu_lst=stu_lstelse:

self.stu_lst=[]def tianjia(self,stu):#添加学生功能

self.stu_lst.append(stu.name)def display(self):#显示老师对应的学生

for i inself.stu_lst:print(i,end=",")#创建学生类

classStudent:def __init__(self,num,name,teacher=None):

self.num=num

self.name=name

self.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就是谁。

classBase:def __init__(self, num):

self.num=numdeffunc1(self):print(self.num)

self.func2()deffunc2(self):print(111, self.num)classFoo(Base):继承deffunc2(self):print(222, self.num)

lst= [Base(1), Base(2), Foo(3)]for obj inlst:

obj.func2()#结果111 1 111 2 222 3

classUserInfo(object):pass

classDepartment(object):pass

classStarkConfig(object):def __init__(self, num):

self.num=numdefchangelist(self, request):print(self.num, request)defrun(self):

self.changelist(999)class RoleConfig(StarkConfig): #继承 StarkConfig

defchangelist(self, request):print(666, self.num)classAdminSite(object):def __init__(self):

self._registry= {} #空字典

defregister(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 insite._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中类与对象之间的关系_python 类与类之间的关系相关推荐

  1. 学习笔记之——Python中类和对象的理解

    学习笔记之--Python中类和对象的理解 面向对象的含义和特性 类 Python中类的定义.结构.创建 Python类的定义 Python类的结构 类的创建 类的属性 类的方法 对象 对象的创建 参 ...

  2. python 中类与对象

    python中类.属性.方法用现实中的一个例子来解释,例如汽车类,方法:能跑,属性:白色的.加长的.python中的属性就是在python中定义的成员变量,方法就是在python中定义的函数. pyt ...

  3. 混淆概念详细解析:Python中类、对象、方法、函数和属性的区别和理解

    混淆概念详细解析:Python中类.对象.方法.函数和属性的区别和理解 前言 一.类.对象.方法.函数和属性的区别和理解 二.一个类的简单案例和对各种概念的理解 三.总结 欢迎学习交流! 邮箱: z- ...

  4. python中类与对象之间的关系_python类与类之间的关系

    在面向对象中,类和类之间也可以产生相关的关系 类中的关系: 依赖关系是最轻的,最重的是继承关系,关联关系是比较微妙的 依赖关系 执行某个动作的时候,需要xxx来帮助完成这个操作,此时的关系是最轻的. ...

  5. python中类和对象的内容_python中的类和对象

    摘要:本文主要介绍了python中的类和对象的基础内容.由于在c++中对类和对象已经有了较为深刻的认识,所以此部分就是主要熟悉一下创建方法和使用方法. 1.类.对象的创建和简单使用 主要观察创建类的方 ...

  6. 下面属于python内置对象的有哪些_Python内置对象实现的方法及注意事项

    ![QQ截图20150928150103.png](http://studygolang.qiniudn.com/150928/e6361a28482c2d44561584940a75112b.png ...

  7. 下面属于python内置对象的有哪些_python练习题-写一个函数,打印所有包含copy方法的内置对象...

    代码: #encoding=utf-8 for i in dir(__builtins__): #print "i:",i try: #这里的i是个字符串,并不能直接用dir(i) ...

  8. python中删除对象方法的区别_python中delattr删除对象方法的代码分析

    最近我们针对对象属性这块,介绍了不少关于测试属性的方法.在进行一系列测试后,我们发现这个属性并不需要,这时候就要用到删除的功能.在python中可以选择delattr函数删除对象的属性,基于它的删除功 ...

  9. python中类和对象_Python里的类和对象简介

    ---恢复内容开始--- Python里的类 对象=属性+方法: 对象的属性主要是指主要的特征和参量,而方法主要是指函数: 类是一个具有一定特征和方法的集合,而对象是类的一个:类和对象的关系就如同模具 ...

最新文章

  1. Python中怎样改变集合之间的关系?
  2. 谷歌员工怒了 900人联名抗议 刚成立的AI道德委员会处境尴尬
  3. redis链表link命令
  4. spring boot / cloud (二) 规范响应格式以及统一异常处理
  5. tomcat基本使用和超图基本jsp例子
  6. linux shell之替换目录下包含关键字所有文本里面的内容
  7. Java修炼之路——基础篇——数据类型
  8. Spring 事务相关及@Transactional的使用建议
  9. 9203 0427 随堂小结
  10. 2022年推出?特斯拉人形机器人被批就是个笑话
  11. Android studio 不能识别(显示?????)部分手机的解决办法
  12. php 生成不重复的会员卡号,php生成一个不重复的会员号
  13. BCDboot 命令行选项
  14. 手游加速器:[求助]安卓端 手游变速器,类似光环助手的实现方式是怎样的?...
  15. linux zip加压到文件夹,Linux下zip压缩和unzip解压缩命令全解
  16. [MATLAB App Designer] 在表(UITable)中设置下拉菜单
  17. Structured Streaming任务GC问题
  18. 官方rom提取原签名工具_ROM开发工具箱官方版(字节转换,反编译,apk/zip签名)4.45免费版...
  19. rstudio中读取数据_如何在RStudio中预览数据
  20. 宋智孝那个机器人_陈柏霖机器人竟然冷落宋智孝

热门文章

  1. [LeetCode] Valid Anagram - 字符串排序比较系列
  2. [python学习] 简单爬取图片网站图库中图片
  3. 【数据结构与算法】之深入解析“下一个更大元素I”的求解思路与算法示例
  4. iOS之深入解析bitcode的功能与应用
  5. iOS之深入解析如何构建动态库与framework动态更新
  6. python正则表达式函数match()和search()的区别详解
  7. 树莓派搭建Django服务器通过远程访问
  8. python人工智能——深度学习——TensorFlow基本介绍
  9. 【ARM】ARM汇编程序设计(三) 循环结构
  10. java 写文件 0x0d_Java 读写文件 - My and My Princess…… - OSCHINA - 中文开源技术交流社区...