2014-11-05 70 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」以獲取更多細節。