1 实例化一个对象的查询顺序
对象.属性 : 先从对象空间找,如果找不到,再从类空间找,再找不到,再从父类找....
类名.属性 : 先从本类空间找,如果找不到,再从父类找....
2 计算一个类,实例化多少对象
代码块
class Count:
count=0
def __init__(self):
Count.count+=1 #这里必须用Count.count,不是self.count
a=Count()
b=Count()
c=Count()
print(Count.count)
d=Count()
#实例化四个对象
print(Count.count) #查看实例化了多少个对象。
3 通过类名可以更改我的类中的静态变量值,但是通过对象 不能改变只能引用类中的静态变量
代码块
class Count:
count=0
def __init__(self):
Count.count+=1 #这里必须用Count.count,不是self.count
c=Count()
Count.count=6
print(Count.count) #可以通过类的名字改变类的静态变量
c.count=8
print(c.count) #8 只能更改对象的静态变量,不能更改类
print(Count.count) #类中静态变量依然是6
4 英雄联盟角色攻击类模拟
'''
模拟英雄联盟写一个游戏人物的类(升级题).
要求:
(1)创建一个 Game_role的类.
(2) 构造方法中给对象封装name,ad(攻击力),hp(血量).三个属性.
(3) 创建一个attack方法,此方法是实例化两个对象,互相攻击的功能:
例: 实例化一个对象 盖伦,ad为10, hp为100
实例化另个一个对象 剑豪 ad为20, hp为80
盖伦通过attack方法攻击剑豪,此方法要完成 '谁攻击谁,谁掉了多少血, 还剩多少血'的提示功能.
'''
代码块
class Game_role:
def __init__(self,name,ad,hp):
self.name=name
self.ad=ad
self.hp=hp
def attack(self,g2): #实例化对象也可以作为参数
g2.hp-=self.ad
print('%s攻击%s,%s掉了多少%d, 还剩%d血'%(self.name,g2.name,g2.name,self.ad,g2.hp))
g1=Game_role('gailun',10,100)
g2=Game_role('jianhao',20,80)
g1.attack(g2)

网友评论