day17对象.属性和类名.属性的查询顺序

1.常用知识点说明

查询顺序

  • 对象.属性 : 先从对象空间找,如果找不到,再从类空间找,再找不到,再从父类找…
  • 类名.属性 : 先从本类空间找,如果找不到,再从父类找

知识点警告

  • 通过类名可以更改我的类中的静态变量值
    Count.count = 6
    print(Count.dict)

  • 但是通过对象 不能改变只能引用类中的静态变量

    obj1 = Count()
    print(obj1.count)
    obj1.count = 6
    (你这样一做,只是在对象中添加了一个属性count,这个属性的值为6 )

类名称空间和对象空间

在这里插入图片描述

组合

class GameRole:
    def __init__(self, name, hurt, life):
        self.name = name
        self.hurt = hurt
        self.life = life

    def attack(self, enemy):
        enemy.life = enemy.life - self.hurt
        print("攻击了%s,掉了%d血,还剩%d" % (enemy.name, self.hurt, enemy.life))

    def equip_wea(self, wea):
        self.wea = wea
        self.hurt = self.hurt + wea.hurt


class Tools:
    def __init__(self, name, hurt):
        self.name = name
        self.hurt = hurt

p1=GameRole("wdd",10,150)
p2=GameRole("wf",15,150)
axe=Tools("三板斧",20)
p1.equip_wea(axe)
p1.attack(p2)

猜你喜欢

转载自blog.csdn.net/weixin_36051743/article/details/83215023