【发布时间】:2016-04-18 17:02:53
【问题描述】:
class Enemy(object):
def __init__(self, name, hp, damage):
self.name = name
self.hp = hp
self.damage = damage
def is_alive(self):
return self.hp > 0
enemies = {}
enemies['dog'] = Enemy("Dog", 20, 5)
if enemies['dog'].is_alive:
print("Woof, Woof!")
enemies['dog'].hp = 0
print(enemies['dog'].hp)
if not enemies['dog'].is_alive:
print("The dog is dead")
如上所示,我创建了一个类,该类具有检查其中一个变量的数量的函数。当我运行它时,它可以工作,但是,当它为 0 时使用“不”让它打印时,它不打印任何东西,即使我将变量更改为 0。我通过打印 HP 来检查它,改了之后果然改了。
是否有人可以告诉我为什么它不打印?我曾尝试寻找答案,但找不到任何东西。请帮忙!
【问题讨论】:
-
你应该用括号调用
is_alive()。否则,您只是引用该方法而不调用。 -
你可以用
@property装饰is_alive,这样你就可以在没有括号的情况下调用它:docs.python.org/2/library/functions.html#property
标签: python class python-3.x if-statement logical-operators