zoukankan      html  css  js  c++  java
  • 有关 组合 继承

    # 1 人狗大战的简单版
    # class Person:
    # role = 'person'
    # def __init__(self,name,aggressivity,life_value):
    # self.name = name
    # self.aggressivity = aggressivity
    # self.life_value = life_value
    # def attack(self,do):
    # print('%s攻击了%s'%(self.name,do.name))
    # do.life_value -= self.aggressivity
    # class Dog:
    # role = 'dog'
    # def __init__(self, name, aggressivity, life_value):
    # self.name = name
    # self.aggressivity = aggressivity
    # self.life_value = life_value
    # def bite(self, per):
    # print('%s咬了%s' % (self.name,per.name))
    # per.life_value -= self.aggressivity
    # hero = Person('王英雄',120,400)
    # Two_dog = Dog('大阿黄',150,400)
    # hero.attack(Two_dog)
    # print(Two_dog.life_value)
    # Two_dog.bite(hero)
    # print(hero.life_value)
    # 2 运用组合写 内容人加了打狗棒 攻击力100,狗加了狗套防御力80,

    # class Person:
    # role = 'person'
    # def __init__(self,name,aggressivity,life_value,money):
    # self.name = name
    # self.aggressivity = aggressivity
    # self.life_value = life_value
    # self.money = money
    # def attack(self,do):
    # print('%s攻击了%s'%(self.name,do.name))
    # do.life_value -= self.aggressivity
    # def pick_weapon(self,dagougun):
    # if self.money > dagougun.price:
    # self.money -= dagougun.price
    # self.dagougun = Weapon #这是最主要的关键点也是联系点 Person 以另一个的Weapson 的对象为属性
    # self.aggressivity += dagougun.aggressivity
    # class Dog:
    # role = 'dog'
    # def __init__(self, name, aggressivity, life_value):
    # self.name = name
    # self.aggressivity = aggressivity
    # self.life_value = life_value
    # def bite(self, per):
    # print('%s咬了%s' % (self.name,per.name))
    # per.life_value -= self.aggressivity
    # class Weapon:
    # def __init__(self,name,aggressivity,price):
    # self.name = name
    # self.aggressivity = aggressivity
    # self.price = price
    # hero = Person('王英雄',120,400,10)
    # Two_dog = Dog('大阿黄',150,400)
    # dgg = Weapon('打狗棍',80,8)
    # hero.pick_weapon(dgg)
    # hero.attack(Two_dog)
    # print(Two_dog.life_value)
    # Two_dog.bite(hero)
    # print(hero.life_value)

    # 3 用继承的方法进行改造

    class Animal:
    def __init__(self,name,aggressivity,life_value):
    self.name = name
    self.aggressivity = aggressivity
    self.life_value = life_value
    def eat(self):
    self.aggressivity += 10
    print('幸运大礼包攻击力加10')
    class Person(Animal):
    role = 'person'
    def __init__(self,name,aggressivity,life_value,money):
    # Animal.__init__(self,name,aggressivity,life_value) #第一种经典派生属性
    super().__init__(name,aggressivity,life_value) #第二种新式 派生属性 比前者少个self
    self.money = money
    def attack(self,do):
    print('%s攻击了%s'%(self.name,do.name))
    do.life_value -= self.aggressivity
    def pick_weapon(self,dagougun):
    if self.money > dagougun.price:
    self.money -= dagougun.price
    self.dagougun = Weapon #这是最主要的关键点也是联系点 Person 以另一个的Weapson 的对象为属性
    self.aggressivity += dagougun.aggressivity
    def eat(self):
    # Animal.eat(self)
    super().eat()
    print('%s吃了一顿大餐,增加50攻击力' % self.name)
    self.aggressivity += 30
    class Dog(Animal):
    role = 'dog'
    def __init__(self, name, aggressivity, life_value):
    Animal.__init__(self, name, aggressivity, life_value)
    def bite(self, per):
    print('%s咬了%s' % (self.name,per.name))
    per.life_value -= self.aggressivity
    def eat(self):
    # Animal.eat(self)
    print('%s吃了一根骨头,增加50攻击力'% self.name)
    self.aggressivity += 50
    class Weapon:
    def __init__(self,name,aggressivity,price):
    self.name = name
    self.aggressivity = aggressivity
    self.price = price

    # super(Dog,Two_dog).eat()
    # Animal.eat()
    hero = Person('王英雄',120,400,10)
    Two_dog = Dog('大阿黄',150,400)
    dgg = Weapon('打狗棍',80,8)
    # hero.pick_weapon(dgg)
    # hero.eat() # 调用person的 30点攻击力 另外person自己还继承了父类的10点
    # hero.attack(Two_dog)
    # print(Two_dog.life_value)
    # ---------
    # Animal.eat(Two_dog) #类名.方法(对象) 继承父类
    # super(Dog,Two_dog).eat() #super(子类名,对象名) 继承父类
    Two_dog.eat()
    # print(hero.aggressivity)
    Two_dog.bite(hero)
    print(hero.life_value)



















  • 相关阅读:
    在smarty模板中截取指定长度的字符串
    HTMl中Meta标签详解以及meta property=og标签含义
    seo标题关键字描述字数限制Title,keywords,description长度最长多长 ?
    网站title,meta,description如何设置,长度大小多少合适!
    php如何开启gd2扩展
    PHP生成带logo图像二维码的两种方法
    [uart]1.Linux中tty框架与uart框架之间的调用关系剖析
    TCP/IP四层模型和OSI七层模型的概念
    [platform]新旧内核的device设备注册对比
    [platform]linux platform device/driver(三)--Platform Device和Platform_driver注册过程之代码对比
  • 原文地址:https://www.cnblogs.com/xiaoluoboer/p/7896539.html
Copyright © 2011-2022 走看看