# 程序从上往下一次把类的静态变量和方法全部加载进一个内存空间,直到遇到类名加括,实例化对象的时候会新开辟一个内存空间,# (会有一个类对象指针)在对象里面没找到目标会根据指针,去类里面找 # 查询顺序:# 对象.属性:先从对象空间找,如果找不到,再从类空间找,再找不到再从父类找# 类名.属性:先从本类空间找,如果找不到,再从父类找
类名称空间:在定义类的时候会开辟一个空间,这个空间里面装着所有的类class Person: animal=‘高级动物‘ soul=‘有灵魂‘ language=‘语言‘ def __init__(self,name,age,sex): self.name = name self.age = age self.sex = sex def eat(self): print(‘%s,在吃饭‘ % (p1.name)) p1=Person(‘张三‘,18,‘男‘) print(p1.language) #先从对象空间找,没有找到在去类空间找
组合:
# 组合:给一个类的对象封装一个属性,这个属性是另一个类的对象
# 3,模拟英雄联盟写一个游戏人物的类(简单的封装).# 要求:# (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,p): p.hp=p.hp-self.ad print(‘%s攻击%s,%s掉了%s血,还剩%s血‘ % (self.name,p.name,p.name,self.ad,p.hp))p1=Game_role(‘盖伦‘,10,100)p2=Game_role(‘剑豪‘,20,80)p1.attack(p2)
(升级)
class Game_role: def __init__(self,name,ad,hp): self.name = name self.ad = ad self.hp = hp def men_weapon(self,we): #定义一个封装武器的方法(接收参数,把武器封装给对象) self.we=we #we接收的就是a1,(相当于赋值,此时we就是封装好的武器) 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血‘ % (p1.name,p2.name,p2.name,self.ad,p2.hp)) p1=Game_role(‘盖伦‘,20,100) p2=Game_role(‘剑豪‘,50,80) a1=Weapon(‘大刀‘,60) a2=Weapon(‘小刀‘,30) p1.men_weapon(a1) #组合,在这一步调用封装武器的方法,把武器传给函数进行封装 p1.we.fight(p1,p2) #这里解释出来就是发起攻击,p1对象使用, we装备好的给p1的武器, fight攻击方法(函数方法) , (p1,p2)是p1攻击p2
原文地址:https://www.cnblogs.com/hdy19951010/p/9360396.html
时间: 2024-10-05 18:08:23