2016-04-24 67 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