当前位置: 首页 > 面试题库 >

Python中对象的布尔值

穆睿才
2023-03-14
问题内容

众所周知,Python具有对象的布尔值:如果一个类具有一个__len__方法,则该方法的每个实例__len__()恰好返回0的值都将被评估为布尔值False(例如,空列表)。

实际上,每个可迭代的空自定义对象都被评估为False好像它出现在布尔表达式中一样。

现在假设我有一个foo带有attribute的类bar。我如何定义它的真值,这样,也就是说,它会进行评估,True if bar % 2 == 0False以其他方式?

例如:

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

因此,a(myfoo)应打印"eggs"


问题答案:

请参阅Python文档__nonzero__

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()


 类似资料:
  • 问题内容: 我声明一个布尔变量。例如, 现在,如果我执行以下代码段: 我懂了。好吧,我知道它很明显,但是我需要知道其背后的原因。 问题答案: 当您评估对象的布尔值时,Java会将其取消装箱(自装箱功能,自1.5开始)。因此,实际的代码是:。然后它抛出。对于任何装箱的值,将空对象拆箱将引发此异常。 在1.5之前,您必须手动将值拆箱:所以它更明显(也更加冗长:)

  • 本章节我们学习布尔值,了解什么是布尔值,在 Ruby 中布尔值的基本用法。 1. 什么是布尔值 布尔值是真 True 或假 False 中的一个。动作脚本也会在适当时将值 True 和 False 转换为 1 和 0。布尔值经常与动作脚本语句中通过比较控制脚本流的逻辑运算符一起使用。——官方定义 布尔值代表着真和假,在代码上,通常显示为true和false。 2. 在 Ruby 中使用布尔值 在

  • 但是这个代码不起作用。编译器说 我在试图理解代码的问题是什么。我认为将返回一个布尔值流,我可以通过收集这些值。

  • 问题内容: 使用嵌套对象的布尔运算符时遇到一些麻烦。这是我的映射: 我想获取恰好包含两个指定ip甚至更多的文档。 假设我的文档具有以下ips: 我想通过使用此过滤器进行搜索来仅检索DOC 1: 问题在于,同时检索了DOC 1和DOC2。 问题答案: 你可以使用你的条件过滤器是这样的: 这是我用来测试的一些代码: http://sense.qbox.io/gist/d6b5f4e4c0d2977a0

  • 本文向大家介绍将Java字符串对象转换为布尔对象,包括了将Java字符串对象转换为布尔对象的使用技巧和注意事项,需要的朋友参考一下 可以使用字符串文字在Java中创建字符串对象。 创建字符串对象的另一种方法是使用new关键字。 我们使用第一种方法来创建字符串对象。 现在,使用该方法将字符串对象转换为布尔对象。我们已经在布尔对象上使用了此方法。 现在让我们看完整的示例,以显示如何将String Ob

  • 问题内容: 我正在寻找一种基于布尔值对Swift数组进行排序的方法。 我已经使用强制转换为NSArray来工作了: 但是我在寻找Swift变体,有什么想法吗? 更新 感谢Arkku,我设法使用以下代码修复了此问题: 问题答案: 斯威夫特的阵列可以在适当的位置进行排序或用新的阵列。这两个函数的单个参数都是一个闭合,该闭合带有两个元素,如果第一个元素在第二个元素之前被排序,则返回。使用闭包的参数的最短