python中类和类的组合,依赖,关联关系

python中类和类的组合,依赖,关联关系

转载自:(https://www.cnblogs.com/chen55555/articles/10279008.html)

组合关系:将一个对象封装到另一个对象的属性中

  • 组合的好处:
    • 1.代码更合理。
    • 2.类与类之间的耦合性增强。
class GameRole(object):
    def __init__(self, n, a, h):
        self.name = n
        self.ad = a
        self.hp = h

    def attack(self, obj):
        obj.hp -= self.ad
        print('%s攻击%s,%s掉了%s血,还剩%s血' % (self.name, obj.name, obj.name, self.ad, obj.hp))

    # 把一个对象的属性里封装另一个对象,叫做组合
    def equip_weapon(self, wea):
        self.wea = wea


class Weapon:
    def __init__(self, name, ad):
        self.name = name
        self.ad = ad

    def weapon_attack(self, p1, p2):
        p2.hp = p2.hp - self.ad - p1.ad
        print('%s利用%s攻击了%s,%s还剩%s血' % (p1.name, pillow.name, p2.name, p2.name, p2.hp))


gailun = GameRole('盖伦', 10, 100)
yasuo = GameRole('剑豪', 20, 80)
pillow = Weapon('绣花枕头', 2)
#pillow.weapon_attack(gailun, yasuo)

gailun.equip_weapon(pillow)
gailun.wea.weapon_attack(gailun, yasuo)

依赖关系:给一个类的方法传了一个参数此参数是另一个类的对象(类名)。

  • 这种依赖关系是所有关系中紧密型最低的,耦合性最低的。
  • 冰箱依赖大象,就好比企业与兼职工的关系,你中有我,我中没有你。
class Elphant:
    def __init__(self, name):
        self.name = name

    def open(self, obj):
        print('芝麻开门')
        obj.open_door()

    def close(self, obj):
        print('芝麻关门')
        obj.close_door()


class Refrigerator:
    def __init__(self, name):
        self.name = name

    def open_door(self):
        print('门开了')

    def close_door(self):
        print('门关了')


e1 = Elphant('壮象')
medai = Refrigerator('美的')
e1.open(medai)
# e1.close(medai)

关联关系:将一个对象的属性赋值 修改为另一个对象

class Boy:
    def __init__(self, name, grilfriend=None):
        self.name = name
        self.grilfriend = grilfriend

    def have_a_dinner(self):
        if self.grilfriend:
            print('%s和%s一起共度晚餐' % (self.name, self.grilfriend.name))
        else:
            print('吃海鲜')

    def add_grilfriend(self, gril):
        self.grilfriend = gril  # 将一个对象的属性赋值 修改为另一个对象

    def remove_grilfriend(self):
        self.grilfriend = None


class Gril:
    def __init__(self, name):
        self.name = name


b = Boy('rock')
# b.have_a_dinner()

g = Gril('小七')
b.add_grilfriend(g)  # 将一个对象的属性赋值 修改为另一个对象

# b.have_a_dinner()

b.remove_grilfriend()
b.have_a_dinner()

转载自:https://www.cnblogs.com/chen55555/articles/10279008.html

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值