• 面向对象进阶-实例化对象、组合


    名称空间:类的名称空间-->对象的名称空间

    查询顺序:先从对象的名称空间去查,对象的空间没有此变量或者方法,通过对象中的类对象指针去类中寻找.

    对象的问题:无论创建多少对象都是开辟独立的空间互相不能干扰查找

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

    class Game_role:
    def __init__(self, name, ad, hp):
    self.name = name
    self.ad = ad
    self.hp = hp
    def attack(self,obj1):
    obj1.hp = obj1.hp - self.ad
    print('%s攻击%s,%s掉了%s血,还剩%s血'%(self.name,obj1.name,obj1.name,self.ad,obj1.hp))
    def package_weapon(self,wea):
    self.weapon = wea

    class Sword:
    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血' %(p1.name,self.name,p2.name,p2.name,p2.hp))
    aduan = Game_role('啊段', 10, 100)
    ts = Game_role('泰森', 120, 300)
    Slaughter_knife = Sword('杀猪刀',200)
    # 下面是符合逻辑的
    aduan.package_weapon(Slaughter_knife) # 给aduan 这个对象封装了一个weapon属性这个属性值为Slaughter_knife
    aduan.weapon.fight(aduan,ts)
    ts.attack(aduan)
    # 这么写不好,动作的发起人是人而不是刀本身
    # Slaughter_knife.fight(aduan,ts)
    认真做一件事,并将之完全学会掌握为止!
  • 相关阅读:
    Linux下面编译安装ffmpeg
    Fidder简单使用方法(HTTPS抓取和url替换)
    关于一下个阶段的计划
    JAVA的随机的字符串的封装(基本上够用了)
    Shell Script中的间接变量引用
    进程概念
    int main(int argc, char *argv[])的解读
    存储数组数据到SharedPreferences
    C语言中的基本声明
    C中关于指针数组的用法
  • 原文地址:https://www.cnblogs.com/wr13640959765/p/9240928.html
Copyright © 2020-2023  润新知