如何让一个类中的函数返回False?

时间:2013-05-28 23:26:42

标签: python python-3.x boolean-expression

我有一个函数,当生命是< = 0:

时,它应该返回false
def isAlive(self):
    if self.lives <= 0:
       return False
    return True

但它总是返回True。

1 个答案:

答案 0 :(得分:2)

我愿意打赌,实际问题是lives不是数字,而是其他内容,例如字符串'0'或列表[0]。< / p>

在Python 2.x中,当您比较像这样的无法比较的类型的值时,它只是比较类型。*因此,每个strlist都大于每个int。因此,strlist始终不是&lt; =任何int。正如您从交互式解释器中看到的那样:

>>> '2' <= 2
False
>>> 'abcdefg' <= 2
False
>>> [2] <= 2
False

&gt;&gt;&gt; []&lt; = 2 假


要验证这是问题,并开始调试,请尝试print同时self.livestype(self.lives),看看你得到了什么。如果它不是数字int,那就是你需要解决的问题。

解决这个问题的方法是弄清楚你在代码前面的self.lives中是如何得到错误类型的值的,不管你在那里做错了什么,都不要这样做。


*不能保证它们按类型排序,并且类型本身的排序肯定不能保证。但无论如何都没关系,因为即使你确实知道了这个顺序,也很难想象你想要依赖它来做任何有用的事情。