• 对象中的组合方法


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

    例题:
    要求:
    (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













  • 相关阅读:
    Meet Hadoop
    C++常用函数
    Summary
    获得小黄衫感想
    课程作业(八)
    课程作业(七)
    课程作业(六)
    课程作业(五)
    课程作业(四)
    课程作业(三)
  • 原文地址:https://www.cnblogs.com/banjh/p/9531864.html
Copyright © 2020-2023  润新知