作为一名Python初学者,我试图创建一个简单的基于文本的游戏。我想知道如何正确引用我的实例我的Monster
类,从我在Character
类中定义的scan
方法内(这是甚至可能的吗?)。如何从另一个类的方法调用或引用实例属性
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.HP
和self.monster.color
,但我真的很想避免这种情况。
任何帮助或批评是值得欢迎的,在此先感谢:)
作为一个便笺,你可能不需要'怪物.__名字___。大多数类型没有'__name__'属性 - 类可以,但类_instances_不会...除非添加一个。而且,即使你写了“Monster .__ name__”,这只会给你这个班的名字,所以你会说'怪物是蓝色的,有5个HP'。据推测,并非所有的怪物都被命名为“怪物”。甚至连乔治福尔曼都给他的一些孩子乔治娜命名,而不是乔治。所以,你可能想为'Monster'实例添加一个'self.name'属性。 – abarnert 2014-09-29 21:19:41