2014-11-05 92 views
-1

已经在这里:Python class inherits object,这里What is a metaclass in Python?我还不确定如何让我的代码工作。我会说实话,这些解释对我来说有点复杂。 (顺便说一下,这全部在Python 3.4中)。如何在类之间共享属性和方法?

我试图让我的游戏中的对象形式的生物。例如:我想要一个名为龙的对象,但我希望Dragon继承类实体和类Monster。

下面是我得到了什么:

class Entity: 
    id = 0 
    xLocation= 0 
    yLocation = 0 
    name = '' 
    description = '' 
    def __init__(self, id, xLocation, yLocation, name, description): 
     self.xLocation = xLocation 
     self.yLocation = yLocation 
     self.id = id 
     self.name = name 
     self.description = description 


class Monster: 
    life = 0 
    pierce = 0 
    slash = 0 
    blunt = 0 
    pierceReduction = 0 
    slashReduction = 0 
    bluntReduction = 0 
    defenseBonus = 0 
    score = 0 
    def __init__(self, pierceReduction, bluntReduction, slashReduction, price, name, score): 
     self.pierceReduction = pierceReduction 
     self.bluntReduction = bluntReduction 
     self.slashReduction = slashReduction 
     self.price = price 
     self.name = name 
     self.score = score 



class Structure: 
    pass 

Monster = Entity 
Dragon = Monster 

我不知道我怎么可以给龙都既是实体和怪物的价值观?很显然,将龙直接设置为怪物是行不通的。

*****现在我已经试过这*****:

类结构: 通

龙类(实体,怪物): 通

龙( 'Dragon',1000)

Dragon是说它没有两个类的所有参数?

+0

怪物总是一种实体吗?龙总是一种怪物? – 101 2014-11-05 04:50:52

+0

如果您要使用继承,请不要忘记调用父类方法实现。 (特别是'__init__') – warvariuc 2014-11-05 05:25:57

+0

龙永远是一个怪物和实体。非常感谢你的viraptor和serkos! (我的代表不够高,无法让你两个都赞不绝口)。 P.S. warvariuc我不知道你的意思。 – 2014-11-06 00:20:00

回答

0

您可以在声明中继承实体类:class Monster(Entity):。您可以在documentation

0

中找到详细信息Python可以具有从多个父项继承的类。你可以简单地做:

class Dragon(Monster, Entity): 
    # class details 

只要确保这些类之间的分辨率顺序是你所期望的。搜索“python mro”以获取更多细节。

相关问题