gpt4 book ai didi

python - Python中对象的 boolean 值

转载 作者:IT老高 更新时间:2023-10-28 21:56:17 26 4
gpt4 key购买 nike

众所周知,Python 对对象有 boolean 值:如果一个类有一个 __len__ 方法,那么 __len__() 碰巧返回 0 的每个实例都会被评估为 boolean 值 False(例如,空列表)。

事实上,如果每个可迭代的空自定义对象出现在 boolean 表达式中,它都会被评估为 False

现在假设我有一个带有属性bar 的类foo。我如何定义它的真值,例如,如果 bar % 2 == 0 和 False 否则它将被评估为 True?


例如:


myfoo = foo()
myfoo.bar = 3
def a(foo):
if foo:
print "spam"
else:
print "eggs"

所以,a(myfoo) 应该打印 "eggs"

最佳答案

在 Python < 3.0 中:

您必须使用 __nonzero__达到你想要的。这是一种在 boolean 上下文中评估对象时由 Python 自动调用的方法。它必须返回一个 boolean 值,用作要评估的值。

E.G:

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 !"

在 Python => 3.0 中:

同样的事情,除了方法被重命名为更明显的__bool__ .

关于python - Python中对象的 boolean 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1087135/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com