• Python学习笔记-Day16


    今日大纲

    一、面向对象的组合

    组合:给一个类的对象封装一个属性,这个属性就是另一个类的对象

    组合的意义:让一个类的对象和另一个类的对象产生关系,让一个类和另一个类产生关系

    如何组合:

    1、在类1中定义一个方法,类1的对象1在执行这个方法的时候能增加一个属性,属性值就是类2的对象2

    2、对象1执行这个方法,增加一个属性值是类2的对象2

    3、类1.属性名.类2中的方法,就以类1为主体执行了类2的方法

    class Gamerole:
        def __init__(self,name,ad,hp):
            self.name = name
            self.hp = hp
            self.ad = ad
        def attack(self,role):
            role.hp = role.hp - self.ad
            print('%s攻击%s,%s掉了%s血,还剩%s血' % (self.name,role.name,role.name,self.ad,role.hp))
        def equip_weapon(self,w):  #定义一个方法,让Gamerole的对象可以产生一个新的属性,属性名是weapon,属性值是Weapon的对象
            self.weapon = w
    class Weapon:
        def __init__(self,name,ad):
            self.name = name
            self.ad = ad
        def fight(self,role1,role2):
            role2.hp = role2.hp - self.ad
            print('%s用%s攻击%s,%s掉了%s血,还剩%s血' %(role1.name,self.name,role2.name,role2.name,self.ad,role2.hp))
    p1 = Gamerole('盖伦',20,500)
    p2 = Gamerole('剑豪',100,200)
    # p1.attack(p2)
    w1 = Weapon('大宝剑',30)
    w2 = Weapon('武士刀',80)
    # w1.fight(p1,p2)  #刀是主体,不合规范 盖伦用大宝剑攻击剑豪,剑豪掉了30血,还剩170血
    p1.equip_weapon(w1)  #执行方法,给对象p1增加一个属性weapon,属性值是Weapon的对象w1
    # print(p1.weapon)  #<__main__.Weapon object at 0x000001FF47997AC8>
    # print(w1) #<__main__.Weapon object at 0x000001FF47997AC8>
    p1.weapon.fight(p1,p2) #盖伦用大宝剑攻击剑豪,剑豪掉了30血,还剩170血

  • 相关阅读:
    C#中yield return用法分析
    SQL表连接查询(inner join(join)、full join、left join、right join、cross join)
    SQL Server 数据类型转换函数
    linq查询结果指定列的两种方式
    html2cavans
    ORM
    Node.js Web 模块
    Node.js GET/POST请求
    Node.js 文件系统
    装逼利器函数注释
  • 原文地址:https://www.cnblogs.com/tian-tian/p/9530215.html
Copyright © 2020-2023  润新知