Python中对象的布尔值
正如我们所知,Python对对象有布尔值:如果一个类有一个Python中对象的布尔值,python,boolean,Python,Boolean,正如我们所知,Python对对象有布尔值:如果一个类有一个\uuuu len\uuuu方法,那么它的每个实例如果\uuuuu len\uuuu()恰好返回0,就会被计算为布尔值False(例如,空列表) 事实上,如果每个iterable空自定义对象出现在布尔表达式中,则它的计算结果为False 现在假设我有一个属性为bar的类foo。我如何定义它的真值,比如说,如果条%2==0,它将被计算为True,否则它将被计算为False 例如: myfoo = foo() myfoo.bar = 3 de
\uuuu len\uuuu
方法,那么它的每个实例如果\uuuuu len\uuuu()
恰好返回0,就会被计算为布尔值False
(例如,空列表)
事实上,如果每个iterable空自定义对象出现在布尔表达式中,则它的计算结果为False
现在假设我有一个属性为bar的类foo
。我如何定义它的真值,比如说,如果条%2==0,它将被计算为True,否则它将被计算为False
例如:
myfoo = foo()
myfoo.bar = 3
def a(foo):
if foo:
print "spam"
else:
print "eggs"
因此,a(myfoo)
应该打印“鸡蛋”
,请参阅Python文档以获取更多信息
Python中的<3.0:
你必须使用它来实现你想要的。它是Python在布尔上下文中计算对象时自动调用的方法。它必须返回一个将用作计算值的布尔值
例如:
Python中的=>3.0:
同样的事情,除了方法被重命名为更明显的方法。另请参见:\uuu nonzero\uuu()
@Wolf,不会。请参考Python 3的其他答案,此答案仅适用于Python 2。
class foo(object):
def __nonzero__( self) :
return self.bar % 2 == 0
def a(foo):
if foo:
print "spam"
else:
print "eggs"
def main():
myfoo = foo()
myfoo.bar = 3
a(myfoo)
if __name__ == "__main__":
main()
class Foo(object):
def __init__(self, bar) :
self.bar = bar
def __nonzero__(self) :
return self.bar % 2 == 0
if __name__ == "__main__":
if (Foo(2)) : print "yess !"