码迷,mamicode.com
首页 > 其他好文 > 详细

面向对象中组合的用法

时间:2018-10-02 17:21:28      阅读:143      评论:0      收藏:0      [点我收藏+]

标签:lex   else   对象   jin   面向对象   +=   管理系统   获取   info   

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

#
class Dog:
    def __init__(self, name, aggr, hp, kind):
        self.name = name
        self.aggr = aggr
        self.hp = hp
        self.kind = kind


    def bite(self, persion):
        persion.hp += self.aggr

#
class Persion:
    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
            # 对象没有这个属性值则会创建一个weapon属性值
            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, persion):  # 武器技能
        if self.njd > 0:
            persion.hp -= self.aggr * 2
            self.njd -= 1

alex = Persion(alex, 0.5, 100, 不详)
jin = Dog(金老板, 100, 500, 不详)
w = Weapon(打狗棒, 100, 3, 998)

# alex充了1000金币
alex.money += 1000

# alex买了打狗棒
alex.get_weapon(w)
print(alex.weapon)
print(alex.aggr)

# alex攻击了jin
alex.attack(jin)
print(jin.hp)

# alex使用武器的技能攻击jin
alex.weapon.hand18(jin)
print(jin.hp)

# 上面的例子其实就默默的用到了组合
# 组合:一个对象的属性值是另外一个类的对象
    # alex.weapon 是 Weapon类的对象



# 组合练习(谈到组合,就不只是一个类去解决问题)
# 创建一个老师类
# 老师有生日
# 生日可以是一个类
class Birthday:
    def __init__(self, year, mon, day):
        self.year = year
        self.mon = mon
        self.day = day

class Teacher:
    def __init__(self, name, age, sex):
        self.name = name
        self.age = age
        self.sex = sex
        self.birthday = Birthday(1993, 8, 1)    # 组合用法一个对象的属性值是另外一个类的对象

#
t = Teacher(why, 23, boy)
print(t.birthday.year)

# 大作业,校园管理系统

 技术分享图片

面向对象中组合的用法

标签:lex   else   对象   jin   面向对象   +=   管理系统   获取   info   

原文地址:https://www.cnblogs.com/whylinux/p/9736706.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!