Python面向对象之组合
# 组合: 给一个类的对象封装一个属性,这个属性是另一个类的对象. 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) p1.attack(p2) # 盖伦 攻击 亚索,亚索 掉了20血,还剩180血
p2.attack(p1) # 亚索 攻击 盖伦,盖伦 掉了50血,还剩450血 p1.armament_weapon(axe)
p1.wea.fight(p1, p2) # 盖伦 用倚天剑打了亚索,亚索 掉了60血,还剩120血
p2.armament_weapon(broadsword)
p2.wea.fight(p2, p1) # 亚索 用屠龙刀打了盖伦,盖伦 掉了100血,还剩350血 注意:
1.查询顺序:
对象.属性:先从对象空间找,如果找不到,再从类空间找,再找不到,再从父类找。。。
类名.属性:先从本类空间找,如果找不到,再从父类找,。。。 2.对象与对象之间是互相独立的。
3.通过类名可以直接更改本类中的静态变量值
4.但是通过对象不能改变本类中的静态变量值,只能引用类中的静态变量。
5.类名()产生了一个(含有类对象指针的)空间,所以,对象可以访问类中的静态变量和动态变量。

Python面向对象之组合的更多相关文章
- Python()- 面向对象的组合用法
面向对象的组合用法 一个类中以另一个类的对象作为数据属性(一个类中引用另一个类的对象)一种 "有" 的关系: 比如:定义 1个人类 & 1个武器类 然后 张三 有 枪 李四 ...
- Python面向对象(组合、菱形继承、多态)
今日内容: 1.组合 2.菱形继承 3.多态与多态性 昨天内容重点回顾: 1)调用也叫实例化:发生了2件事 1.创造空对象 2.触发对象下的__init__方法,然后将p连同参数一同传给init ...
- python面向对象:组合、封装、property装饰器、多态
一.组合二.封装三.property装饰器四.多态 一.组合 ''' 1. 什么是组合 一个对象的属性是来自于另外一个类的对象,称之为组合 2. 为何用组合 组合也是用来解决类与类代码冗余的问题 3. ...
- 第四百一十三节,python面向对象,组合、类创建的本质、依赖注入
组合 组合举例组合就是多个类,或者若干类联合起来完成一个任务下面举例两个类联合起来完成一个任务为了降低代码的耦合度,我们一般不会在一个类里实例化另外一个类,都是将一个类在外面实例化后传参到另外一个来这 ...
- python面向对象之类的组合
一.python类的组合:给一个类的对象封装一个属性,这个属性是另一个类的对象二.组合的意义:让类的对象与另一个类的对象产生关系,类与类之间产生关系.三.例子模拟英雄联盟写一个游戏人物的类 要求:(1 ...
- python 面向对象编程学习
1. 问题:将所有代码放入一个py文件:无法维护 方案:如果将代码才分放到多个py文件,好处: 1. 同一个名字的变量互相不影响 2.易于维护 3.引用模块: import module 2.包:解决 ...
- python 面向对象学习
------Python面向对象初 下面写一个类的简单实用,以便方便理解类 #python 3.5环境,解释器在linux需要改变 #阅读手册查询readme文件 #作者:S12-陈金彭 class ...
- Python面向对象-day07
写在前面 上课第七天,打卡: 时间的高效利用: 前言: 今天egon老师补充了下 is 和 == 的区别,整理如下:Python中变量的属性以及判断方法 一.面向过程和面向对象 - 1.面向过程 核心 ...
- python面向对象-三大特性
python面向对象编程三大特性 小结:前面我们说完了类和对象的关系,相信对类和对象的理解更加透彻..让我们一起去研究面向对象的三大特性吧.... 继承 1.什么继承? 在程序中继承就是事物之间的所属 ...
随机推荐
- Contiki 2.7 Makefile 文件(二)
二.Makefile.include 1.第一部分 (1) ifndef CONTIKI ${error CONTIKI not defined! You must specify where Con ...
- sphinx 全文搜索引擎
sphinx的安装与配置 --------------------------------------------------------------------------------------- ...
- Unity 摄像机旋转初探
接触打飞机的游戏时都会碰见把摄像机绕 x 轴顺时针旋转 90°形成俯瞰的视角的去看飞船.也没有多想,就感觉是坐标系绕 x 轴旋转 90°完事了.但是昨天用手比划发一下发现不对.我就想这样的话绕 x 轴 ...
- BZOJ_4033_[HAOI2015]树上染色_树形DP
BZOJ_4033_[HAOI2015]树上染色_树形DP Description 有一棵点数为N的树,树边有边权.给你一个在0~N之内的正整数K,你要在这棵树中选择K个点,将其染成黑色,并 将其他的 ...
- 「LuoguP4180」 【模板】严格次小生成树[BJWC2010](倍增 LCA Kruscal
题目描述 小C最近学了很多最小生成树的算法,Prim算法.Kurskal算法.消圈算法等等.正当小C洋洋得意之时,小P又来泼小C冷水了.小P说,让小C求出一个无向图的次小生成树,而且这个次小生成树还得 ...
- 人工智能实践:linux 和 python 基础简介
linux下的目录 绝对路径:是以根目录(" / ")为起点的完整路径,以你所要到的目录为终点. 相对路径:是你当前的目录(" .")为起点的路径,以你所要到的 ...
- JavaScript总结(1)
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/stri ...
- QT画矩形
第一次发QT的博文,本人对QT接触没多久,还在入门水平,大牛勿喷哈,之前因为C# (.net framework)做出来的绘制矩形的程序闪的太厉害了,现在用QT重做一个 先上效果图 代码贴全了 #i ...
- 功能测试工具Selenium IDE
Selenium IDE:一个专门用于Firefox浏览器的插件,能够录制回放用户在Firefox中的行为,并把所记录的Selenese (Selenium Commands)转化为HTML/Java ...
- htons和htonl函数具体应用
htons和htonl函数具体应用 htons和htonl函数,是用来将主机字节顺序转换为网络字节顺序在进行网络抓包时,抓到的包的数据是网络字节顺序,在进行编程时,要进行主机字节顺序和网络字节顺序间的 ...