我们知道,Python对对象有布尔值:如果一个类有一个__len__
方法,那么它的每一个__len__()
碰巧返回0的实例都将被计算为一个布尔值False
(例如,空列表)。
事实上,如果每个iterable的空自定义对象出现在布尔表达式中,则其计算结果为False
。
现在假设我有一个属性为bar
的类foo
。我如何定义它的真值,以便,比方说,它将被计算为True if bar % 2 == 0
和False
否则?
例如:
myfoo = foo()
myfoo.bar = 3
def a(myfoo):
if foo:
print "spam"
else:
print "eggs"
所以,a(myfoo)
应该打印"eggs"
。
有关^{} ,请参阅Python文档。
在Python<;3.0中:
你必须用^{} 来实现你想要的。这是Python在布尔上下文中计算对象时自动调用的方法。它必须返回一个将用作要计算的值的布尔值。
例如:
在Python中=>;3.0:
同样的事情,除了方法被重命名为更明显的^{} 。
相关问题 更多 >
编程相关推荐