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

18.07.24(查询顺序,组合)

时间:2018-07-24 19:24:16      阅读:138      评论:0      收藏:0      [点我收藏+]

标签:更改   技术   查询   属性   计算   ==   之间   分享   空间   

在执行类名()时产生一个含有类对象指针的空间

技术分享图片

 

查询顺序:

(1).对象>属性:先从对象空间找,如果找不到再从类空间找,再找不到再从父类找.

(2).类名>属性:先从本类空间找,如果找不到再从父类空间找

对象和对象之间是互相独立的

例:计算实例化的次数

class Preson:
count = 0
def __init__(self):
Preson.count = Preson.count + 1
obj1 = Preson()
obj2 = Preson()
obj3 = Preson()
print(Preson.count) ==>3

通过类名可以更改类中的静态变量值,但是通过对象不能改变,只能引用类中的静态变量

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

例:

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 - p1.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,300)
w1 = Weapon("平底锅",70)
p2.armament_weapon(w1)
p2.wea.fight(p2,p1)
结果:红太狼用来平底锅打了灰太狼,灰太狼掉了70血,还剩380血

技术分享图片

 

18.07.24(查询顺序,组合)

标签:更改   技术   查询   属性   计算   ==   之间   分享   空间   

原文地址:https://www.cnblogs.com/gxj742/p/9361661.html

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