Pythonでクラス変数に関する質問があります。独立クラスのクラス変数へのアクセスPython2.7.1
RPG用の単純な攻撃クラスを作成しようとしています。私はこのクラスでWeaponクラスとCharacterクラスの変数にアクセスする必要がありますが、3つは互いに継承関係はありません。そして、私は、すべてのスレッドが継承されているため、オンラインでヘルプを見つけることができません。ここで
は、各クラスのコードサンプルは、次のとおりです。
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変数にもアクセスする必要があります。
FWIW、私は攻撃をクラスにすることに多くの点はないと思います。なぜ攻撃()機能がないのでしょうか? –
私はちょうどこれについて疑問に思っていた...キャラクター、アイテム、インベントリなどのクラスの方が良いか...キャラクタークラスの攻撃メソッドはWeaponクラスの変数を使用し、別のキャラクターは実行可能で簡単使用する。私はそれを試してみる。 – Sorade
インデントの間違いを削除するのは良い方法ではありません。あなたの質問を見ている人を考えてください。今は理解できません。 – cromod