zoukankan      html  css  js  c++  java
  • Python--面向对象之组合

    一 : 概述

      组合就是一个类的对象可以作为另一个类的对象的属性.

      这个说法看起来可能有点绕,但是通过代码可以很快理解,并且你会感觉"对,面向对象就应该能这样",而且看起来很cooooooooooool!!!

    二 : 演示

      需求 : 创建一个人物类和武器类,要求两个人物可以互相攻击,还可以装备武器攻击

    class GameRole:
        def __init__(self, name, ad, hp):
            self.name = name
            self.ad = ad
            self.hp = hp
    
        def attack(self,p):
            p.hp = p.hp - self.ad
            print('%s 攻击 %s,%s 掉了%s血,还剩%s血' %(self.name,p.name,p.name,self.ad,p.hp))
    
        def armament_weapon(self,wea):
            self.wea = wea
    
    
    class Weapon:
        def __init__(self,name,ad):
            self.name = name
            self.ad = ad
        def fight(self,p1,p2):
            p2.hp = p2.hp - self.ad
            print('%s 用%s打了%s,%s 掉了%s血,还剩%s血'
                  % (p1.name,self.name,p2.name,p2.name,self.ad,p2.hp))

    p1 = GameRole('海绵宝宝',20,500)
    p2 = GameRole('章鱼哥',50,200)
    w1= Weapon('歼星舰',60)
    w2= Weapon('充气锤',100)
    print(p1.wea.name) # 歼星舰
    print(p1.wea.ad) # 60
    p1.attack(p2) # 海绵宝宝 攻击 章鱼哥,章鱼哥 掉了20血,还剩180血

       可以看到,人物有武器这个属性,而武器有名字和攻击力的属性,所以有了 p1.wea.name  和 p1.wea.ad 这样的写法可以获得

      组合其实很简单,看到了就会了,会了就懂了,这东西太简单了,也不容易忘记.

      

  • 相关阅读:
    微信小程序——引入WeUI组件库(二)
    微信小程序——引入WeUI组件库(一)
    Centos 安装Sentinel
    Nacos安装与启动教程
    vue 2.9.6升级到3X版本
    window consul安装和运行
    基于Vue、Springboot网站实现第三方登录之QQ登录,以及邮件发送
    Dockerfile创建镜像
    Docker端口映射和容器互联
    Docker数据管理
  • 原文地址:https://www.cnblogs.com/DoingBe/p/9433615.html
Copyright © 2011-2022 走看看