如何在类之间共享属性和方法?

时间:2014-11-05 04:36:45

标签: python class inheritance python-3.4

来到这里:Python class inherits object,在这里What is a metaclass in Python?我仍然不确定如何让我的代码正常运行。说实话,这些解释对我来说有点复杂。 (顺便说一句,这完全在Python 3.4中)。

我试图以生物的形式为我的游戏制作对象。示例:我想要一个名为Dragon的对象,但我希望Dragon继承类Entity和类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直接设置为怪物并不起作用。

*****我现在试过这个*****:

类结构:     通

龙类(实体,怪物):     通

Dragon(10,10,10,1000,' Dragon',1000)

龙说它不具备这两个类的所有参数吗?

2 个答案:

答案 0 :(得分:0)

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

中找到详细信息

答案 1 :(得分:0)

Python可以拥有从多个父级继承的类。你可以这样做:

class Dragon(Monster, Entity):
    # class details

确保这些类之间的解析顺序符合您的预期。有关它的更多详细信息,请搜索“python mro”。