2016-04-24 68 views
0

我有一個關於Python中的類變量的問題。獨立類訪問類變量Python2.7.1

我想爲一個RPG編寫一個簡單的攻擊類,並且我需要在這個類中訪問我的Weapon類和我的字符類的變量,但是所有三個都沒有彼此的繼承關係。由於所有線程都是繼承,我無法在網上找到幫助。

下面是每個類的代碼示例:

class Character(pygame.sprite.Sprite): 
    def __init__(self, hp, image, speed, x, y): 
     super(Character, self).__init__() 
     self.image = image 
     self.rect = self.image.get_rect().move(x, y) #initial placement 
     self.hp = hp 

class Weapon(Item): #Parent class item is a sprite class 
    def __init__(self, name, value, image, x, y, dmg): 
     super(Weapon, self).__init__(name, value, image, x, y) 
     self.dmg = dmg 


class Attack(object): 
    def __init__(self, Weapon, Character): 
     self.Weapon = Weapon 
     self.Character = Character  
    self.Character.hp -= self.Weapon.dmg 
UPDATE #####縮進整流
class Attack(object): 
    def __init__(self, Weapon, Character): 
     self.Weapon = Weapon 
     self.Character = Character  
     self.Character.hp -= self.Weapon.dmg 

當我嘗試運行我的程序,我得到以下錯誤:

File "classes.py", line 136, in <module> 
    class Attack(object): 

    File "classes.py", line 141, in Attack 
    self.Character.hp -= self.Weapon.dmg 

NameError: name 'self' is not defined 

關於如何從我的Attack類中的Character類訪問hp變量的任何想法?最終,我還需要訪問Attack類中的Weapon類的dmg變量。

+0

FWIW,我認爲沒有太多的關注讓Attack成爲一門課。爲什麼不只是有一個攻擊()函數? –

+0

我只是想知道這個...我應該更擅長類人物,物品,庫存等類......使用Weapon類和另一個角色變量的Character類中的攻擊方法是可行和容易的使用。我會試試看。 – Sorade

+0

刪除縮進錯誤不是一個好習慣。想一想看你的問題的人,現在他們無法理解它。 – cromod

回答

0

您的縮進self.Character.hp -= self.Weapon.dmg存在問題。此代碼應該工作:

class Attack(object): 
    def __init__(self, Weapon, Character): 
     self.Weapon = Weapon 
     self.Character = Character  
     self.Character.hp -= self.Weapon.dmg 
+0

嗨,感謝您的回覆,我新使用堆棧溢出...這是一個很好的做法,刪除這個問題,因爲它是一個簡單的縮進錯誤? – Sorade

+0

如果需要,您可以決定刪除您的問題。但是沒有人低估它,這意味着它有興趣。 – cromod