我有两个对象类:class Hero(object):
和class Alien(object)
,每个对象类都包含一个name
参数,其中包含对象实例的名称。在每个类中,我都有一个名为def die(self):
的类方法,它定义了Hero被击中或未被击中时会发生什么。虽然我能够在自身内部引用对象,但我在执行向后操作时遇到了麻烦,后者正在引用引用该方法的对象。对不起,如果这令人困惑,这就是我的意思:
#this die and blast function is contained in both classes
def die(self):
#(pseudocode) if hit:
print (self.name, " is hit!")
#(pseudocode) elif not hit:
print (enemy.name, " misses!") #<-- currently doesn't work because enemy is not defined in the die function
def blast(self, enemy):
print(self.name," blasts ", enemy.name, "\n")
enemy.die()
def main():
heroObject = Hero()
alienObject = Alien()
heroObject.blast(alienObject)
这是我的问题:我知道当我调用blast()
时,我使用对象的名称作为参数。但是在blast()
和die()
函数内部,如何调用最初调用它的对象的名称?行print (enemy.name, " misses!")
目前无效,因为enemy
函数中未定义die
。理想情况下,敌人的名字会出现在print
声明中。
答案 0 :(得分:2)
如果您需要从die()
访问其他对象,请将其明确传递给该函数:
def die(self, enemy):
#(pseudocode) if hit:
print (self.name, " is hit!")
#(pseudocode) elif not hit:
print (enemy.name, " misses!")
def blast(self, enemy):
print(self.name," blasts ", enemy.name, "\n")
enemy.die(self)
def main():
heroObject = Hero()
alienObject = Alien()
heroObject.blast(alienObject)
当我们从self
进入enemy
时,请注意blast()
和die()
的含义是如何反转的。
如果可能的话,有一个观察结果是,在die()
内有一个“if misses”逻辑似乎有点奇怪。似乎暗示即使敌人没有死亡而且即将死亡,也可以召唤die()
。我认为逻辑属于函数之外。