首页 > 编程语言 >Python面向对象——架构设计【2】

Python面向对象——架构设计【2】

时间:2024-03-19 11:59:06浏览次数:27  
标签:__ 架构设计 Python self atk 面向对象 call hp def

 练习1:打电话

请使用面向对象思想描述下列情景:

    小明使用手机打电话,还有可能使用座机....

class People:
    def __init__(self,name):
        self.name = name

    def call_up(self,tool):
        print(self.name,end="")
        tool.call()
        

class Tools:
    def __init__(self,way):
        self.way = way

    def call(self):
        print(f"使用{self.way}通话")

zs = People("张三")
ls = People("李四")
phone = Tools("手机")
landline = Tools("座机")
zs.call_up(phone)
ls.call_up(landline)

 练习2:游戏角色系统

玩家攻击敌人,敌人受伤(头顶爆字,减少血量),还有可能死亡(加分).

敌人攻击玩家,玩家受伤(碎屏,减少血量),还有可能死亡(充值).

体会:

    攻击完全相同

    受伤部分相同

    死亡完全不同

要求:

    增加了其他角色,敌人/玩家不变

class Role:
    def __init__(self, hp=0, atk=0):
        self.hp = hp
        self.atk = atk

    def attack(self, target):
        print("发起攻击")
        target.get_hurt(self.atk)

    def get_hurt(self, other_atk):
        self.hp -= other_atk
        if self.hp <= 0:
            self.death()

    def death(self):
        pass

class Player(Role):
    def get_hurt(self, other_atk):
        print("碎屏")
        super().get_hurt(other_atk)

    def death(self):
        print("充值")

class Enemy(Role):
    def get_hurt(self, other_atk):
        print("头顶爆字")
        super().get_hurt(other_atk)

    def death(self):
        print("加分")


# --------------测试--------------
p = Player(200, 50)
e = Enemy(100, 10)
p.attack(e)
e.attack(p)

p.attack(e)

 

标签:__,架构设计,Python,self,atk,面向对象,call,hp,def
From: https://blog.csdn.net/FA1CAE/article/details/136664691

相关文章

  • Python——Regular Expression(正则表达式)RE
    正则表达式是一种强大的文本处理工具,它使用一种特殊的语法来匹配、查找以及替换字符串中的字符组合。在Python中,正则表达式,"re模块"。英文叫做"RegularExpression"。re模块是Python中用于处理正则表达式的标准库。它提供了多个函数来执行正则表达式的匹配、查找、替换和分割操......
  • 自动化测试框架、Python面向对象以及POM设计模型简介
    1 自动化测试框架概述   所谓的框架其实就是一个解决问题的思维,前言中描述的诸多问题如果得到解决,自然而然这种得到良好解决的东西它就可以称之为一个框架,只是这个框架用来解决如何组织开展自动化测试。一个典型的自动化测试框架一般包括测试用例集模块、测试执行控制模块......
  • python 小小入门2
    紧跟上章使用FinalShell1)mkdiraaa创建文件夹mkdir-p/aaa/bbb/ccc创建文件夹以及后续2)touch 例如touch1.txt也可touch1.txt2.txt3.txt以及touchfsd.sdad也可以创建如果已经有了touch1.txt再创建一个touch1.txt那么他不会覆盖以及删除原来的文件只......
  • python中`__call__`让类像函数一样被调用
    在训练一个网络过程中,有下面代码'''4.训练网络'''print('开始训练')forepochinrange(3):runing_loss=0.0fori,datainenumerate(trainloader,0):inputs,label=data#1.数据加载ifdevice=='gpu':......
  • 简化python ctypes库调用API的封装
    使用ctypes库调用C的函数,需要进行封装.如下所示:#对结构的封装classSTARTUPINFOEX(Structure):"""STARTUPINFOEXstructure"""_fields_=[("StartupInfo",STARTUPINFO),("lpAttributeList",POINTER(PVOID))......
  • matinal:SAP ABAP OO面向对象编程中的触发和处理事件
    ......
  • Python轻松实现地图可视化(附详细源码) 转载
    大家好,我是J哥,专注原创,致力于用浅显易懂的语言分享爬虫、数据分析及可视化等干货,希望人人都能学到新知识。Python的地图可视化库很多,Matplotlib库虽然作图很强大,但只能做静态地图。而我今天要讲的是交互式地图库,分别为pyecharts、folium,掌握这两个库,基本可以解决你的地图可视化需......
  • Python伪数据生成器Mimesis 使用
    一、**Mimesis的介绍**Mimesis是一个用于Python的high-performance伪数据生成器,它用各种语言为各种目的提供数据。这些假数据可以用来填充测试数据库,创建假API端点,创建任意结构的JSON和XML文件,匿名化从生产中获取的数据等等。二、**主要特点是:***性能:Python可用的最快的数......
  • 二维前缀和&二维差分(超详细,python版,其他语言也很轻松能看懂)
    上一篇文章讲解了一维前缀和&一维差分,本篇进阶为二维。二维前缀和:二维前缀和跟一维前缀和求法相同,这里直接上例子。数组a=[[1,2,2,1],[3,2,2,1],[1,1,1,1]]a数组如图:则数组a的前缀和为:数组b[[1,3,5,6],[4,8,12,14],[5,10,15,18]]b数组如图:前缀和递推公式为b[i][......
  • 【黑马程序员】Python高阶
    文章目录闭包定义nonlocal关键字作用优缺点优点缺点装饰器装饰器闭包写法设计模式单例模式工厂模式优点代码示例多线程基本概念threading模块网络编程服务端开发socketsocket服务端编程客户端开发正则表达式正则的三个基础方法matchsearchfindAll元字符匹配单字......