编程语言
首页 > 编程语言> > python面向对象之三大特性

python面向对象之三大特性

作者:互联网

三大特性

 

类的组合用法

面向对象的用法

一个对象的属性值是另外一个类的对象,就是组合

 

# 定义了一个Dog类,有名字,攻击力,血量,种类,并且有咬的技能(方法)
class Dog:
    def __init__(self,name,aggr,hp,kind):
        self.name = name
        self.aggr = aggr
        self.hp = hp
        self.kind = kind
    def  bite(self,person):
        person.hp -= self.aggr

# 定义了一个人的类,有名字,攻击力,血量,性别,金钱,有攻击技能,有获取武器的技能
class Person:
    def __init__(self,name,aggr,hp,sex):
        self.name = name
        self.aggr = aggr
        self.hp = hp
        self.sex = sex
        self.money = 0

    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 # 给人类加了一个weapon属性
            self.aggr += weapon.aggr # 人的攻击力加上武器的攻击力
        else:
            print('余额不足') # 如果钱不够,则报错


# 定义了一个武器类,有名称,攻击力,耐久度,价钱,还有大招hand18
class Weapon:
    def __init__(self,name,aggr,njd,price):
        self.name = name
        self.aggr = aggr
        self.njd = njd
        self.price = price

    def hand18(self,dog):
        if self.njd >0: # 使用大招有限度
            dog.hp -= self.aggr *2 # 血量直接减去武器攻击力的两倍
            self.njd -=1 # 耐久度减去1




w = Weapon('打狗棒',100,3,998) # 实例化一个打狗棒武器
alex = Person('alex',0.5,100,'male') # 实例化一个alex人对象
jin = Dog('金老板',100,500,'teddy') # 实例化一个狗对象
alex.money =1000 # 人的金钱增加,可以买武器
alex.get_weapon(w) # alex获得武器
alex.attack(jin)  # 攻击狗对象
alex.weapon.hand18(jin)  # 使用武器大招攻击
print(jin.hp)

 

标签:weapon,alex,name,python,之三,self,面向对象,aggr,hp
来源: https://www.cnblogs.com/wc89/p/10363817.html