如何从另一个类方法中调用或引用实例属性

时间:2014-09-29 21:02:07

标签: python oop

作为Python初学者,我正在尝试创建一个简单的基于文本的游戏。我想知道如何在我monster类中定义的Monster方法中正确引用scan类的Character实例(这是甚至可能?)。

class Monster:
    def __init__(self):
        self.HP = 5
        self.color = 'blue'


class Character:
    def scan(self):
        print("{} is {} and has {} HP.".format( monster.__name__, 
                                                monster.color, 
                                                monster.HP ))


class Game:
    def __init__(self):
        self.monster = Monster()
        self.player = Character()

        self.player.scan()

Game()

我已经阅读了很多内容,尝试getattr这样的事情,没有任何运气。我知道我可以将scan方法直接放在Game中并使用self.monster.HPself.monster.color,但我真的想避免这种情况。

欢迎任何帮助或批评,提前谢谢:)

1 个答案:

答案 0 :(得分:1)

你明确传入怪物进行扫描:

class Character:
    def scan(self, monster):
        print("{} is {} and has {} HP.".format(
            monster.__name__, monster.color, monster.HP))

self.player.scan(self.monster)

这样你的代码也可以处理多个怪物。