码迷,mamicode.com
首页 > 编程语言 > 详细

python 2018.7.24 类空间,对象空间,查询顺序 ,组合

时间:2018-07-24 17:48:17      阅读:212      评论:0      收藏:0      [点我收藏+]

标签:__init__   找不到   OLE   静态变量   装备   EAP   多少   ...   属性   

查询顺序:
对象.属性 : 先从对象空间找,如果找不到,再从类空间找,再找不到,再从父类找....
类名.属性 : 先从本类空间找,如果找不到,再从父类找....
对象与对象之间是互相独立的.

计算一个类 实例化多少对象.
    class Count:
count = 0
def __init__(self):
Count.count = self.count + 1
obj1 = Count()
obj2 = Count()

print(Count.count)
count = 0

class Count:
count = 0
def __init__(self):
pass

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

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

obj1 = Count()
print(obj1.count)
obj1.count = 6



组合: 给一个类的对象封装一个属性,这个属性是另一个类的对象.

 版本二:
class GameRole:
def __init__(self, name, ad, hp):
self.name = name
self.ad = ad
self.hp = hp

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

def armament_weapon(self,wea):
self.wea = wea


class Weapon:
def __init__(self,name,ad):
self.name = name
self.ad = ad
def fight(self,p1,p2):
p2.hp = p2.hp - self.ad
print(‘%s 用%s打了%s,%s 掉了%s血,还剩%s血‘\
% (p1.name,self.name,p2.name,p2.name,self.ad,p2.hp))

p1 = GameRole(‘大阳哥‘,20,500)
p2 = GameRole(‘印度阿宁‘,50,200)
axe = Weapon(‘三板斧‘,60)
broadsword = Weapon(‘屠龙宝刀‘,100)
# print(axe)
p1.armament_weapon(axe) # 给大阳哥 装备了三板斧这个对象.
# print(p1.wea)
# print(p1.wea.name)
# print(p1.wea.ad)
p1.wea.fight(p1,p2)
 




python 2018.7.24 类空间,对象空间,查询顺序 ,组合

标签:__init__   找不到   OLE   静态变量   装备   EAP   多少   ...   属性   

原文地址:https://www.cnblogs.com/xdlzs/p/9360345.html

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