类与类之间的关系

在我们的世界中事物和事物之间总会有一些联系.

在面向对象中. 类和类之间也可以产生相关的关系

1. 依赖关系

执行某个动作的时候. 需要xxx来帮助你完成这个操作. 此时的关系是最轻的.

随时可以更换另外一个东西来完成此操作

class Plant:
def __init__(self,zhonglei,xue,gongjili):
self.zhonglei = zhonglei
self.xue = xue
self.gongjili = gongjili def da(self,js):
print("植物打僵尸")
js.xue -= self.gongjili
if js.xue <= 0:
print("僵尸死亡")
else:
print(f"僵尸掉血{self.gongjili},僵尸还剩{js.xue}血") class Jiang:
def __init__(self,zhonglei,xue,gongjili):
self.zhonglei = zhonglei
self.xue = xue
self.gongjili = gongjili def chi(self,zw):
print("僵尸咬植物")
zw.xue -= self.gongjili
if zw.xue <= 0:
print("植物死亡")
else:
print(f"植物掉血{self.gongjili},植物还剩{zw.xue}血")
p = Plant("豌豆",1000,300)
j = Jiang("路障",1800,200) p.da(j)
p.da(j)
p.da(j)
p.da(j)
j.chi(p)
j.chi(p)
p.da(j)
j.chi(p)
j.chi(p)
p.da(j)

2. 关联关系

在对象里面埋对象

self.girlFriend = girl

1. 一对一关系

你和你的女朋友

class Boy:
def __init__(self, name, girlFriend=None):
self.girlFriend = girlFriend # 一个男孩有一个女朋友 def chi(self):
if self.girlFriend:
print(f"带着他的女朋友{self.girlFriend.name}去吃饭")
else:
print("单身狗, 吃什么吃? 滚去学习.") class Girl:
def __init__(self, name):
self.name = name b = Boy("宝宝")
g = Girl("孙艺")
b.chi()

self.teach_list = [t1,t2,t3]

2. 一对多关系

一个学校. 一堆老师

class School:

    def __init__(self, name):
self.teach_list = [] # 这里要装多个老师
self.name = name def zhaopin(self, teach):
self.teach_list.append(teach) def shangke(self):
for t in self.teach_list:
t.work() class Teacher:
def __init__(self, name):
self.name = name def work(self):
print(f"{self.name}在上课") s = School("蓝翔")
t1 = Teacher("老师1")
t2 = Teacher("老师2")
t3 = Teacher("老师3")
s.zhaopin(t1)
s.zhaopin(t2)
s.zhaopin(t3)
s..shangke()

类中的关系: 依赖关系是最轻的. 最重的是继承关系. 关联关系是比较微妙的.

self到底是谁?

self:谁调用的就是谁. 类型是根据调用方的对象来进行变换的

super:表示的是父类


特殊成员:

__init__() # 创建对象的时候初始化操作

__call__() # 对象()

__getitem__() # 对象[哈哈]

__setitem__() # 对象[哈哈] = 值

__delitem__() # del 对象[key]

__new__() # 创建对象的时候.开辟内存

__enter__() # with 对

__exit__() #结束with的时候

__hash__() # 可哈希 hash()

__len__() 定义当被 len() 调用时的行为

__iter__() 定义当迭代容器中的元素的行为

__repr__(self) 定义当被 repr() 调用时的行为

__str__(self) 定义当被 str() 调用时的行为

__int__(self) 定义当被 int() 调用时的行为

__bool__(self) 定义当被 bool() 调用时的行为

__bytes__(self) 定义当被 bytes() 调用时的行为

Python面向对象(类之间的关系)(三)的更多相关文章

  1. 百万年薪python之路 -- 面向对象之:类空间问题以及类之间的关系

    面向对象之:类空间问题以及类之间的关系 1.从空间角度研究类 1.何处添加对象属性 class A: def __init__(self,name): self.name = name def fun ...

  2. Python面向对象02/类的空间问题、类与对象之间的关系、类与类之间的关系

    Python面向对象02/类的空间问题.类与对象之间的关系.类与类之间的关系 目录 Python面向对象02/类的空间问题.类与对象之间的关系.类与类之间的关系 1. 类的空间问题 2. 类与对象之间 ...

  3. python 面向对象专题(二):类的空间问题、类与对象之间的关系、类与类之间的关系

    https://www.cnblogs.com/liubing8/p/11308127.html 目录 Python面向对象02/类的空间问题.类与对象之间的关系.类与类之间的关系 1. 类的空间问题 ...

  4. Python面向对象 | 类空间及类之间的关系

    一. 类的空间问题 1何处可以添加对象属性 class A: def __init__(self,name): self.name = name def func(self,sex): self.se ...

  5. Python面向对象之:类空间问题以及类之间的关系

    一. 类的空间问题 1.1 何处可以添加对象属性   class A: def __init__(self,name): self.name = name def func(self,sex): se ...

  6. python学习 day017打卡 类与类之间的关系

    本节主要的内容: 1.依赖关系 2.关联关系,组合关系,聚合关系 3.继承关系,self到底是什么? 4.类中的特殊成员 一.类与类之间的依赖关系 在面向对象的世界中,类与类中存在以下关系: 1.依赖 ...

  7. python --- 18 类与类之间的关系, 特殊成员

    类与类之间的关系 一.依赖关系 执行某个动作的时候. 需要xxx来帮助你完成这个操作      随时可以更换另外一个东西来完成此操作 此时的关系是最轻的. 二.关联关系(组合关系,聚合关系) 1.一对 ...

  8. C++面向对象高级编程(五)类与类之间的关系

    技术在于交流.沟通,转载请注明出处并保持作品的完整性. 本节主要介绍一下类与类之间的关系,也就是面向对象编程先介绍两个术语 Object Oriented Programming   OOP面向对象编 ...

  9. 巨蟒python全栈开发-第18天 核能来袭-类和类之间的关系

    一.今日主要内容: 1.类与类之间的关系 在我们的世界中事物和事物之间总会有一些联系. 在面向对象中,类和类之间也可以产生相关的关系 (1)依赖关系 执行某个动作(方法)的时候,需要xxx来帮助你完成 ...

随机推荐

  1. IP服务-1-ARP和代理ARP

    代理ARP常被人忽视,因为现在基本不用了

  2. keil_rtx调试技巧

    超级循环结构的程序调试一般依赖于断点,单步,查看变量和内存变量(keil中的Memory Window 或者 Watch window):而带微操作系统的程序由于加了这个中间层调试方法可能传统的有些区 ...

  3. 04.Javascript——入门一些方法记录之iterable

    遍历Array可以采用下标循环,遍历Map和Set就无法使用下标.为了统一集合类型,ES6标准引入了新的iterable类型,Array.Map和Set都属于iterable类型. 具有iterabl ...

  4. spring mvc 获取所有注册的url

    背景:坑货同事写代码一点规范都没有,瞎写,根据url没法直接定位到方法,无奈产生了此接口,程序员何苦为难程序员呢 @Autowired private RequestMappingHandlerMap ...

  5. bootstrap警告框、进度条和列表组

    警告框   <div class="container">      <div class="alert alert-success" rol ...

  6. Java 多个if 和多个else if 的区别

    int a=1; if(a==1){System.out.println("1");} if(a==2){System.out.println("2");} i ...

  7. Oracle数据仓库创建教程

    Oracle数据仓库创建教程.如何创建一个数据仓库,创建实例,以为毕业设计要求,最近开始Oracle的数仓建模实践,详细记录了图形界面下的 Oracle database 12C 数据仓库创建过程. ...

  8. Objective-C Loops

    There may be a situation, when you need to execute a block of code several number of times. In gener ...

  9. Java多态的应用

    //多态的应用 class Animal{     public void eat(){     } } class Dog extends Animal{     public void eat() ...

  10. POJ 1739 Tony's Tour (插头DP,轮廓线DP)

    题意:给一个n*m的矩阵,其中#是障碍格子,其他则是必走的格子,问从左下角的格子走到右下角的格子有多少种方式. 思路: 注意有可能答案是0,就是障碍格子阻挡住了去路. 插头DP有两种比较常见的表示连通 ...