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)