# -*- coding:utf-8 -*- # 面向对象的三大特性:继承、多态、封装 #组合:一个对象的属性值,是另外一个类的对象 #nezha.weapon 是 Weapon的对象 class Dog: def __init__(self,*args): self.name = args[0] self.hp = args[1] self.aggr = args[2] self.kind = args[3] def bite(self,person): person.hp -= self.aggr class Person: def __init__(self,*args): self.name = args[0] self.hp = args[1] self.aggr = args[2] self.sex = args[3] self.money = args[4] def attack(self,dog): dog.hp -= self.aggr def get_weapon(self,weapon): if self.money >= weapon.price: self.money -= weapon.price self.weapon = weapon self.aggr += weapon.aggr else: print('金币不足') class Weapon: def __init__(self,name,aggr,njd,price): self.name = name self.aggr = aggr self.njd = njd self.price = price def hand18(self,person): if self.njd > 0: person.hp -= self.aggr*2 self.njd -= 1 else: print("您的武器坏了") gouzi = Dog('gouzi',999,200,'taidi') nezha = Person('nezhan',1999,300,'女',0) w = Weapon('打狗棒',200,3,998) #nezha装备打狗棒 nezha.money += 1000 nezha.get_weapon(w) print(nezha.weapon) #<__main__.Weapon object at 0x0000026174D06940> print(nezha.aggr) #500 哪吒攻击本来300装备武器后变成500 nezha.attack(gouzi) print(gouzi.hp) #499 血量→999-500 nezha.weapon.hand18(gouzi) #使用武器攻击gouzi 499-200*2 print(gouzi.hp) #99血量剩余 99