Class 类的组合

Posted shajing

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Class 类的组合相关的知识,希望对你有一定的参考价值。

定义:一个对象的属性值是另外一个类的对象

# 人狗大战
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;让self具有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

alex = Person(alex,0.5,100,不详)
jin = Dog(金老板,100,500,teddy)
w = Weapon(打狗棒,100,3,998)
# alex装备打狗棒
alex.money += 1000
alex.get_weapon(w)
print(alex.weapon)
print(alex.aggr)
alex.attack(jin)
print(jin.hp)
alex.weapon.hand18(jin)
print(jin.hp)
alex.weapon 是 Weapon类的对象 ,这就叫类的组合。

以上是关于Class 类的组合的主要内容,如果未能解决你的问题,请参考以下文章

python_面向对象_组合

20180724 (面向对象:类的命名空间和查询顺序丶组合)

类的继承与组合

Relay.js 没有正确解析组合片段

Tailwind.css 体验总结

Tailwind.css 体验总结