zoukankan      html  css  js  c++  java
  • 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血

  • 相关阅读:
    对double数据类型的数据保留两位小数,并且进行四舍五入
    div位置设置
    每天一算法 -- (排序算法总结)
    SQL行转列
    设计模式的六大原则
    每天一算法 -- (插入排序)
    每天一算法 -- (选择排序)
    通用扩展函数--类型转换
    wcf和webservice
    Cookie的介绍及使用
  • 原文地址:https://www.cnblogs.com/tian-tian/p/9530215.html
Copyright © 2011-2022 走看看