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        if p.hp > 0:            print("%s攻击%s,%s掉了%s点血,还剩%s点血"                  % (self.name, p.name, p.name, self.ad, p.hp))        else:            print(p.name + "死亡")

    def arm_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        if p2.hp > 0 and p1.hp > 0:            print("%s用%s打了%s,%s掉了%s点血,还剩下%s点血"                  % (p1.name, self.name, p2.name, p2.name, self.ad, p2.hp))        else:            p2.hp = 0            # print(p2.name + "死亡,游戏结束")

p1 = GameRole("盖伦", 20, 500)p2 = GameRole("亚索", 50, 400)axe = Weapon("斧头", 60)sward = Weapon("屠龙宝刀", 100)

p1.arm_weapon(axe)p2.arm_weapon(sward)

count = 0while 1:  # 你们开始打吧,哈哈,管我毛事    print("第%s回合" % (count + 1))

    if p1.hp > 0:        p1.wea.fight(p1, p2)

    if p2.hp > 0:        p2.wea.fight(p2, p1)

    if p1.hp <= 0:        print("%s用%s把%s打死了,%s获胜,游戏结束,让我们恭喜%s!"              % (p2.name, p2.wea.name, p1.name, p2.name, p2.name))        break

    if p2.hp <= 0:        print("%s用%s把%s打死了,%s获胜,游戏结束,让我们恭喜%s!"              % (p1.name, p1.wea.name, p2.name, p1.name, p1.name))        break

    count += 1

原文地址:https://www.cnblogs.com/M-learning/p/11742415.html

时间: 2024-10-20 07:05:17

python对象的属性引用另一个类的的相关文章

python --对象的属性

转自:http://www.cnblogs.com/vamei/archive/2012/12/11/2772448.html Python一切皆对象(object),每个对象都可能有多个属性(attribute).Python的属性有一套统一的管理方案. 属性的__dict__系统 对象的属性可能来自于其类定义,叫做类属性(class attribute).类属性可能来自类定义自身,也可能根据类定义继承来的.一个对象的属性还可能是该对象实例定义的,叫做对象属性(object attribute

如何查看Python对象的属性

在Python语言中,有些库在使用时,在网络上找到的文档不全,这就需要查看相应的Python对象是否包含需要的函数或常量.下面介绍一下,如何查看Python对象中包含哪些属性,如成员函数.变量等,其中这里的Python对象指的是类.模块.实例等包含元素比较多的对象.这里以OpenCV2的Python包cv2为例,进行说明. 由于OpenCV是采用C/C++语言实现,并没有把所有函数和变量打包,供Python用户调用,而且有时网络上也找不到相应文档:还有OpenCV还存在两个版本:OpenCV2和

Python对象的循环引用问题

目录 Python对象循环引用 循环引用垃圾回收算法 容器对象 生成容器对象 追踪容器对象 结束追踪容器对象 分代容器对象链表 何时执行循环引用垃圾回收 循环引用的垃圾回收 循环引用中的终结器 python关于GC的模块 gc.set_debug()(可以查看垃圾回收的信息,进而优化程序) gc.collect() gc.disable() Python对象循环引用 我们来介绍一下 Python 是采用何种途径解决循环引用问题的. 循环引用垃圾回收算法 上图中,表示的是对象之间的引用关系,从自对

关于“如何做到在一个类内不通过创建另一个类的对象,却调用另一个类的方法”的问题

通常,我们在java中通过实例化一个类来调用该类的方法,但是,如果有多个类都要调用这个类地方法,是不是要在每个主调类里面都创建一个被调用类的对象呢? 如果这样做,会不会因为多次实例化而影响程序的执行效果呢? 答案是:没必要多次创建被调用类的对象,而且多次实例化还可能会影响程序执行效果. 解决问题的办法是:在每一个主调类里面各写一个构造方法,形参是被调用类的对象, public ShopCartItem(ShopCart shopcart) { super(); this.shopcart=sho

一个类怎样引用另外一个类的成员变量或方法

通常常用的有:A类有个变量C,B类想调用C方法一:变量C是非静态的(static),那么在B类中创建一个A类的对象,用对象.变量名就可以了方法二:变量C是静态的(static),直接用类.变量名 详细的可以参考这个文库:http://wenku.baidu.com/link?url=tyAAmJNGxBnXLnGLDK5of8B23KOMltUXNIA3rpD6U23F460ot_y7GVfy51utrku2T6wyzUgjX5WodmY623D5PGDWY-wr3UCxzzfVpn5I0E3

php一个类引用另一个类的方法的写法

default.php: <?php namespace SiteInfo{ class Site{ var $url; var $title; function setUrl($par){ $this->url=$par; } function getUrl(){ echo $this->url.PHP_EOL; } function setTitle($par){ $this->title=$par; } function getTitle(){ echo $this->

python基础之面向对象编程介绍、类和对象

面向对象变成介绍 面向过程编程 核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西.主要应用在一旦完成很少修改的地方,如linux内核.git.apache服务器等 优点:极大的降低了程序的设计复杂度 缺点:可扩展性差,改动一个地方很可能要改多个地方,牵一发而动全身 面向对象编程:不是编程的全部,只是用来解决软件可扩展性的 核心是对象(上帝式思维),对象作为程序的基本单元,一个对象包含了数据和操作数据的函数.面向对象就是把计算

python 对象属性与 getattr &amp; setattr

Python对象的属性可以通过obj.__dict__获得,向其中添加删除元素就可以实现python对象属性的动态添加删除的效果,不过我们应该使用更加正规的getattr和setattr来进行这类操作 getattr(object, name[, default]) Return the value of the named attribute of object. name must be a string. If the string is the name of one of the ob

为一个类动态的添加属性

/* 1不想集成一个类添加属性,想动态的添加一个属性 */ ||解决步骤 1.新建一个分类,导入 #import <objc/runtime.h> 2.添加属性(添加的属性,只是做了声明,并没有帮我们生成set,get方法) 3.手动添加set,get方法 {1.在set方法中实现 /* *@object 为那个对象添加属性 *@key  添加一个对应的key  c语言类型的 *@value  对应的值 *@objc_AssociationPolicy  策略 */ objc_setAssoc