博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
面向对象空间和组合
阅读量:4476 次
发布时间:2019-06-08

本文共 2190 字,大约阅读时间需要 7 分钟。

查询顺序: 对象.属性 : 先从对象空间找,如果找不到,再从类空间找,再找不到,再从父类找.... 类名.属性 : 先从本类空间找,如果找不到,再从父类找....
对象与对象之间是互相独立的.
计算一个类 实例化多少对象. class Count:
    
count 
= 
0
    
def 
__init__(
self
):
        
Count.count 
= 
self
.count 
+ 
1
 
obj1 
= 
Count()
obj2 
= 
Count()
通过类名可以更改我的类中的静态变量值
但是通过对象 不能改变只能引用类中的静态变量 组合练习
#模拟英雄联盟写一个游戏人物的类(升级题). #   要求: #   (1)创建一个 Game_role的类. #   (2) 构造方法中给对象封装name,ad(攻击力),hp(血量).三个属性. #   (3) 创建一个attack方法,此方法是实例化两个对象,互相攻击的功能: #       例: 实例化一个对象 盖伦,ad为10, hp为100 #       实例化另个一个对象 剑豪 ad为20, hp为80 #       盖伦通过attack方法攻击剑豪,此方法要完成 '谁攻击谁,谁掉了多少血,  还剩多少血'的提示功能. # 组合: 给一个类的对象封装一个属性,这个属性是另一个类的对象. # # 版本一:添加武器:斧子,刀,枪,棍,棒..., # 代码不合理: 人物利用武器攻击别人,你的动作发起者是人,而不是武器. 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)) 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) axe.fight(p1,p2) broadsword.fight(p2,p1) p1.attack(p2) # 版本二: 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)

  

转载于:https://www.cnblogs.com/123zzy/p/9399657.html

你可能感兴趣的文章
10677 我们仍未知道那天所看见的花的名字
查看>>
ScanTailor-ScanTailor 自动矫正图像歪斜
查看>>
UVA GCD - Extreme (II)
查看>>
解决“只能通过Chrome网上应用商店安装该程序”的方法
查看>>
css背景图撑开盒子高度
查看>>
第十二章 通过异常处理错误
查看>>
Java Iterator ListIterator 理解
查看>>
当使用Switch时 case太多,用委托代替
查看>>
ROS探索总结(三)——ROS新手教程
查看>>
Linux GCC常用命令
查看>>
冒泡排序
查看>>
工作心得1
查看>>
6-Ubuntu—截屏与截取选定区域
查看>>
树链剖分
查看>>
代码演示 Linq 延迟执行(Deferred Execution) 带来的问题
查看>>
内网安全体系建设工作思路
查看>>
第16月第25天 tableView设置UITableViewStyleGrouped顶部有空余高度
查看>>
RPC服务的发布订阅实现(基于Zookeeper服务) 转载
查看>>
读取配置文件包含properties和xml文件
查看>>
解决Mac安装tesserocr报错问题 Failed building wheel for
查看>>