python--类与类之间的关系

2023-11-12

类和类之间的关系

  在我们的世界中事物和事物之间总会有一些联系.
  在面向对象中. 类和类之间也可以产生相关的关系
  1. 依赖关系
    执行某个动作的时候. 需要xxx来帮助你完成这个操作. 此时的关系是最轻的.
    随时可以更换另外一个东西来完成此操作

class Person:
    def play(self, tools): # 通过参数的传递把另外一个类的对象传递进来
        tools.run()
        print("很开心, 我能玩儿游戏了")
class Computer:
    def run(self):
        print("电脑开机. 可以运行")
class Phone:
    def run(self):
        print("手机开机, 可以运行")
c = Computer()
phone = Phone()
p = Person()
p.play(phone)

 

  

# 写一个植物大战僵尸
# 1. 植物
#       打僵尸. 僵尸掉血
# 2. 僵尸
#       吃植物. 植物掉血
class Plant:
    def __init__(self, name, hp, ad): # 200
        self.name = name
        self.hp = hp
        self.ad = ad
    def attack(self, js):
        print("植物攻击僵尸")
        js.hp -= self.ad
        print(f"僵尸掉血{self.ad}, 还剩下{js.hp}")
class JiangShi:
    def __init__(self, name, hp, ad): # 1000  800
        self.name = name
        self.hp = hp
        self.ad = ad
    def attack(self, zw):
        print("僵尸咬植物")
        zw.hp -= self.ad
        print(f"植物掉血{self.ad}, 还剩{zw.hp}")
# 植物
wd = Plant("歪脖子豌豆", 10, 20)
# 僵尸
js = JiangShi("铁桶僵尸", 200, 1)
wd.attack(js)
wd.attack(js)
js.attack(wd)
js.attack(wd)
wd.attack(js)

 

  

  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("单身狗, 吃什么吃? 滚去学习.")

 

  

    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}在上课")

lnh = School("老男孩")
t1 = Teacher("武sir")
t2 = Teacher("太白")
t3 = Teacher("哪吒")
lnh.zhaopin(t1)
lnh.zhaopin(t2)
lnh.zhaopin(t3)
lnh.shangke()

 

  3. self 是谁  

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

  4.特殊成员

__init__() # 创建对象的时候初始化操作
__call__() # 对象()
__getitem__() # 对象[哈哈]
__setitem__() # 对象[哈哈] = 值
__new__() # 创建对象的时候.开辟内存
__enter__() # with 对象
__exit__() #结束with的时候
__hash__() # 可哈希 hash()

转载于:https://www.cnblogs.com/uiys/p/10673171.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python--类与类之间的关系 的相关文章

随机推荐

  • Windows 命令行

    Windows命令行 1 echo 显示内容 echo 内容 类似log echo on off 打开 关闭回写 echo off 内容 pause 写pause时才进行输出 2 cd 进入目录 cd 内容 path路径 进入到对应的文件夹
  • 函数指针(函数作为参数传递给其他函数)

    函数也有地址 函数的地址是存储其机器码的内存的开始的地址 并且函数的地址就是其函数名 因此我们可以将函数作为参数传递给其他函数 正如python中可以将函数轻易的传递给其他函数一样 但是C 中形式上会复杂一些 声明函数指针 如下我们声明了一
  • Java里的按值传递与引用传递

    这个在Java里面是经常被提起的问题 也有一些争论 似乎最后还有一个所谓的结论 在Java里面参数传递都是按值传递 事实上 这很容易让人迷惑 下面先分别看看什么是按值传递 什么是按引用传递 只要能正确理解 至于称作按什么传递就不是个大问题了
  • 【基于python+flask的葡萄酒数据可视化分析+大屏-哔哩哔哩】 https://b23.tv/3ogTuIl

    基于python flask的葡萄酒数据可视化分析 大屏 哔哩哔哩 https b23 tv 3ogTuIl https b23 tv 3ogTuIl
  • ECharts笔记-------柱状图与折线图

    这幅图表由title legend series xAxis yAxis和tooltip这六个组件组成 每个组件都有对应的属性来调节参数 title和legend的代码跟上一篇一样 这里就不多讲了 tooltip组件 tooltip tri
  • linux命令 移动/复制文件/目录到指定目录下

    1 同一个服务器下复制文件或文件夹 1 1 复制文件 复制文件 把1 txt 复制到根目录下的sbin目录 cp 文件名 可带路径 目标路径 带路径 如 cp 1 txt sbin 1 2 复制目录 复制目录 把release 复制到根目录
  • Jwt安装配置

    1 登录接口 2 刷新接口 3 自定义返回格式 1 JWT安装配置 1 1 安装JWT pip install djangorestframework jwt 1 11 0 1 2 syl settings py 配置jwt载荷中的有效期设
  • CocosCreator 长地图相机渲染不全

    记录一下 浏览器运行的时候用default是没有问题的 一旦给换成其他型号的屏幕尺寸 相机就加载不全 地图宛如断开了一样 但是地图里面的刚体什么的都还在 只是不显示 类似这个样子 搜索了一大圈 大概有这么多的可能 1 地图的图层是否有问题
  • 【华为OD机试】字符串子序列II【2023 B卷

    华为OD机试 真题 点这里 华为OD机试 真题考点分类 点这里 题目描述 给定字符串 target 和 source 判断 target是否为 source 的子序列 你可以认为target和 source 中仅包含英文小写字母 字符串 s
  • 计算机网络安全,你了解多少?

    在现在这个网络高度发达的世界 计算机网络安全便也十分重要 但人们对于它的了解少之又少 今天就让我们一起来了解一下吧 1 什么是计算机网络安全 计算机网络安全是指用网络管理控制和技术措施 保证在一个网络环境里数据的保密性 完整性及可使用性受到
  • Nginx 做成系统服务(windows)

    下载winsw https github com winsw winsw releases 将winsw可执行程序复制到nginx安装目录下 并重命名为nginx service 新建名为nginx service xml的文件 注 文件名
  • CSS中苹果X全面屏的适配问题解决方法

    前言 iPhoneX 取消了物理按键 改成底部小黑条 这一改动导致网页出现了比较尴尬的屏幕适配问题 对于网页而言 顶部 刘海部位 的适配问题浏览器已经做了处理 所以我们只需要关注底部与小黑条的适配问题即可 即常见的吸底导航 返回顶部等各种相
  • 编译OpenWRT 出现error 1 set FORCE_UNSAFE_CONFIGURE=1

    补个博客 最近发现记忆不行了 很多问题重复遇见却不记得之前怎么决绝的 在编译OpenWRT时出现 you should not run configure as root set FORCE UNSAFE CONFIGURE 1 in en
  • 关于51/STC单片机中断优先级的调整

    来源 单片机简单程序 zhjysx的博客 CSDN博客https blog csdn net zhjysx category 11558658 html 目录 内容简述 理论 中断源类型 IP寄存器 LED程序 Proteus仿真图 外部中
  • Django基础入门⑭:Django表单实例【表单应用】获取全量书籍信息

    Django基础入门 Django 对象查询详解 分组聚合 Django表单实例 表单应用 编写模板层HTML页面 编写视图层逻辑代码 配置url路由模式映射 页面搜索效果展示 表单验证逻辑 获取全量书籍信息 实现添加书籍信息 个人简介 以
  • 总结numpy中的ndarray,非常齐全

    总结numpy中的ndarray 非常齐全 numpy Numerical Python 是一个开源的Python数据科学计算库 支持对N维数组和矩阵的操作 用于快速处理任意维度的数组 numpy库的功能非常聚焦 专注于做好 一件事 num
  • 1、树莓派4B设置热点,一步步细心来

    参考了 https www icode9 com content 4 683569 html https zhuanlan zhihu com p 101089893 一定要细心 1 安装 network manager sudo apt
  • gin 三.请求数据的映射

    数据解析绑定 基础解释 ShouldBindWith 请求数据映射示例 ShouldBindHeader 将请求头绑定到一个结构体或接口示例 MustBindWith 方式 基础解释 解释 例如后端获取调用方参数 通常会使用一个结构体 或一
  • 深度学习高遥感影像语义分割

    深度学习遥感影像语义分割 深度学习大家都知道 在计算机视觉领域取得了很大的成功 在遥感影像自动解译方面 同样带来了快速的发展 我在遥感影像自动解译领域 也做了一些微薄的工作 发表几篇论文 我一直关注遥感影像自动解译领域 在北京出差的这段时间
  • python--类与类之间的关系

    类和类之间的关系 在我们的世界中事物和事物之间总会有一些联系 在面向对象中 类和类之间也可以产生相关的关系 1 依赖关系 执行某个动作的时候 需要xxx来帮助你完成这个操作 此时的关系是最轻的 随时可以更换另外一个东西来完成此操作 clas