zoukankan      html  css  js  c++  java
  • 对象中的组合方法

    知识要点
    对象中的组合:给一个类的对象封装一个属性,这个属性是另一个类的对象。
    组合的意义:让类的对象与另一个类的对象产生关系,类与类之间产生关系。

    例题:
    要求:
    (1)创建一个 Game_role的类.
    (2) 构造方法中给对象封装name,ad(攻击力),hp(血量).三个属性.
    (3) 创建一个attack方法,此方法是实例化两个对象,互相攻击的功能:
         例: 实例化一个对象 盖伦,ad为10, hp为100
         实例化另个一个对象 剑豪 ad为20, hp为80
         盖伦通过attack方法攻击剑豪,此方法要完成 '谁攻击谁,谁掉了多少血,  还剩多少血'的提示功能.
    解题一:
    class Game_role:
        def __init__(self,name,ad,hp):
            self.name=name
            self.ad=ad
            self.hp=hp
        def attack(self,role):
            role.hp = role.hp - self.ad
            print('{}攻击了{},{}掉了{}点的血,还剩{}点的血'
                  .format(self.name,role.name,role.name,self.ad,role.hp))
    p1=Game_role('盖伦',10,100)
    p2=Game_role('剑豪',20,80)
    p1.attack(p2)   # p2 对应的是attack方法中的形参role
    
    解题二:增加使用武器攻击
    class Game_role:
        def __init__(self,name,ad,hp):
            self.name=name
            self.ad=ad
            self.hp=hp
        def attack(self,role):
            role.hp=role.hp - self.ad
            print('{}攻击了{},{}掉了{}点的血,还剩{}点的血'
                  .format(self.name,role.name,role.name,self.ad,role.hp))
        def fengzwq(self,w): #这里的w是封装另一个类的对象,如p1.fengzwq(w2),那么self(调用者)就拥有了w2的属性,p1.wq就等于w2
            self.wq = w
    
    p1=Game_role('盖伦',10,1000)
    p2=Game_role('剑豪',20,800)
    class Weapon:
        def __init__(self,name,ad):
            self.name=name
            self.ad=ad
        def gongji(self,role1,role2):
            role2.hp = role2.hp - self.ad
            print('{}用{}攻击了{},{}掉了{}点的血,还剩{}点的血'.
                  format(role1.name,self.name,role2.name,role2.name,self.ad,role2.hp))
    w1=Weapon('大宝剑',200)
    w2=Weapon('武士刀',500)
    p1.fengzwq(w1)  # 这一步使p1拥有了W1武器的属性
    p1.wq.gongji(p1,p2)  # p1.wq 等于武器 w1













  • 相关阅读:
    转载集合
    TYVJ P1053 字符串的展开 Label:字符 水
    划分数系列问题
    关于inf的问题
    TYVJ P1031 热浪 Label:dijkstra 最短路
    TYVJ P1032 零用钱 Label:贪心
    如何简单形象又有趣地讲解神经网络是什么?知乎
    CString
    利用afxDump来调试自己的程序
    mfc 调试 弹消息
  • 原文地址:https://www.cnblogs.com/banjh/p/9531864.html
Copyright © 2011-2022 走看看