gpt4 book ai didi

python - 在python中定义一个类的 "boolness"

转载 作者:IT老高 更新时间:2023-10-28 21:41:30 24 4
gpt4 key购买 nike

为什么这不能像人们天真的预期的那样工作?

class Foo(object):
def __init__(self):
self.bar = 3
def __bool__(self):
return self.bar > 10

foo = Foo()

if foo:
print 'x'
else:
print 'y'

(输出为x)

最佳答案

为了兼容 Python 2-3,只需将其添加到您的示例中:

Foo.__nonzero__ = Foo.__bool__

或扩展 Foo 的原始定义以包括:

__nonzero__ = __bool__

你当然也可以反过来定义它们,方法名是__nonzero__,你把它分配给__bool__,但我认为是__nonzero__ 只是 Python 将对象解释为真或假的原始 C 风格的遗产,基于它们与零的等价性。只需添加上面的语句,您的代码就可以在 Python 2.x 上运行,并且会在您升级到 Python 3.x 时自动运行(最终您放弃对 __nonzero__ 的赋值)。

关于python - 在python中定义一个类的 "boolness",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8205558/

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